Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/11/2006, 15h58   #1
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 155
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 155
Points : 32
Points : 32
Par défaut recherche de caractères dans un fichier

Bonjour.

Je suis en train de créer une partie du programme que je fais qui est sensé rechercher tous les caractères "$" et "=" du fichier "var"

Je vous présente le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
 
 
$Fnm = "ecrire/var.php";  //  définit le fichier var
$dol =   '$';
$egal =  '=';
 
 
if (file_exists($Fnm))  //  vérifie que le fichier existe bien
 
		{
		$inF = fopen($Fnm,"r+");
		}
		else
			{
			echo "fichier inexistant";
			}
 
$pos = strpos($inF, $dol);                      //   *
$posi = strpos($inF, $egal);                   //    *
 
 
while (!feof($inF)) {
   echo fgets($inF, 4096)."<br>";  //parcour le fichier
 
}
 
 
if ($pos  ===  false) 
{
   echo "La chaîne '$dol' n'a pas été trouvée dans la chaîne '$inF'";
   echo "La chaîne '$egal' n'a pas été trouvée dans la chaîne '$inF'";
} 
else {
	echo "La chaîne '$dol' a été trouvée dans la chaîne '$inF'";
	echo " et à la position $pos";
	echo "La chaîne '$egal' a été trouvée dans la chaîne '$inF'";
	echo " et à la position $posi";
	}   
 
 
fclose($inF);
 
 
?>
Voilà ce que ça me marque quand je le lance:

Code :
La chaîne '$' n'a pas été trouvée dans la chaîne 'Resource id #2'La chaîne '=' n'a pas été trouvée dans la chaîne 'Resource id #2' ?>
le problème c'est que le fichier "var" est rempli de "$" et de "=" donc ce n'est pas normal. Je n'en suis pas sur mais l'erreur se situe peut être au niveau de ma boucle.

Si quelqu'un peut m'éclairer...

Merci d'avance.
shnouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 17h02   #2
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
  • si ton fichier est pas trouvé, il mettra "fichier inexistant" puis essaiera de faire la suite du script. mets toutes les actions sur le fichier dans le if
  • en paramètre de strpos tu passes le résultat de fopen. fopen renvoie une resource, strpos veut une string.
  • tu ne fais pas de fclose !
__________________
Dia [ Page DVP ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 17h14   #3
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 155
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 155
Points : 32
Points : 32
Bon:

- Le fichier est trouvé sans quoi il me marquerait comme tu dis "fichier non trouvé" j'ai même vérifié avec un echo.

- Alors justement à l'endroit où j'ai mis une * commentée sur mon code j'ai remplacé $inF par $Fnm je ne suis pas sur avoir bien fait (edit: même chose pour les echos du bas).

- j'ai rajouté mon "fclose($inF);" avant de voir ton message.

Malgrès tous ces changement le résultat est toujours le même à tout les coups le problème doit venir de ma boucle s'il n'arrive pas à trouver mes caractère c'est probablement qu'il n'est pas capable de parcourir mon fichier.
shnouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 08h41   #4
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
Citation:
Envoyé par shnouf
- Le fichier est trouvé sans quoi il me marquerait comme tu dis "fichier non trouvé" j'ai même vérifié avec un echo.
oui oui, pour le cas présent ton fichier est trouvé mais je voulais dire que dans le cas où tu donnes à ton script un nom de fichier erroné, le script va faire le file_exist, afficher "pas trouvé" et tenter quand même de faire les strpos, feof, fclose
donc il faut passer tout ton code dans le if, pour qu'il ne fasse les opérations sur le fichier que s'il l'a trouvé
c'est plus clair là ?

Citation:
Envoyé par shnouf
- Alors justement à l'endroit où j'ai mis une * commentée sur mon code j'ai remplacé $inF par $Fnm je ne suis pas sur avoir bien fait (edit: même chose pour les echos du bas).
pour l'histoire de $Fnm et $inF, il faut bien différencier :
$Fnm est une chaîne, qui ne contient que le nom(/chemin) du fichier alors que $inF est une ressource
donc dans les fonctions manipulant le fichier tu donnes à manger $inF (quand il a été ouvert)
par contre il ne faut pas faire une recherche de tes caractères sur $Fnm pasque lui, ce qu'il va te répondre, c'est qu'il trouve pas '$' ni '=' dans la chaîne 'ecrire/var.php'

Citation:
Envoyé par shnouf
Malgrès tous ces changement le résultat est toujours le même à tout les coups le problème doit venir de ma boucle s'il n'arrive pas à trouver mes caractère c'est probablement qu'il n'est pas capable de parcourir mon fichier.
pour ta recherche, il faut chercher des caractères dans une chaîne, cette chaîne doit être le contenu du fichier, il faut donc lire ce fichier
pour ça tu peux utiliser fread, fgets, readfile ou encore file_get_contents

en gros, là, tu cherches tes caractères dans le nom du fichier puis tu lis tout ton fichier sans en regarder le contenu

dernière remarque, tu fais if ($pos === false)
tu peux juste mettre "=="
et admettons que dans ton fichier, on trouve '=' mais pas '$'
tu vas afficher quand même que rien n'a été trouvé
pense à faire le test sur les 2 valeurs
__________________
Dia [ Page DVP ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2006, 10h45   #5
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 155
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 155
Points : 32
Points : 32
à supprimer
shnouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h53.


 
 
 
 
Partenaires

Hébergement Web