probleme pour lire un fichier texte avec script php - PHP - Programmation
Marsh Posté le 01-02-2007 à 21:53:06
Code :
|
Marsh Posté le 01-02-2007 à 22:13:20
merci de ton aide sielfried, mais j'ai mal du m'exprimer, car je voulais en fait que le strpos détecte le 1er caractère de la chaine. Exemple:
chaine1
chaine2
@haine3
chaine4
...
ici je veux détécter le "@" ,c'est qqch comme ca non ?
--> strpos($chaine_a_analyser, '@', 0);
par contre tu dois avoir raison sur la forme du programme, avec le foreach
Marsh Posté le 01-02-2007 à 22:58:46
J'avais effectivement mal lu (je lis toujours en diagonale), ceci dit tu devrais pouvoir adapter ça en lisant simplement la doc de strpos... (http://fr.php.net/manual/fr/function.strpos.php)
Allez va :
Code :
|
(edit: corrigé avec ===)
Marsh Posté le 02-02-2007 à 10:19:09
avec strpos et un certain nombre d'autres fonctions, il faut utiliser le triple égale ( === ) au lieux du double. Le double se contente de vérifier si la valeur numérique (si possible de transformer en nombre) ou la valeur de la chaine de caractére sont égaux. En php, "false" (faux en francais) à pour équivalent numérique 0 ce qui fait que si tu testes avec le chiffre 0 il te dira que c'est bon.
Avec le triple égal, php va également vérifier le type de donnée. Et là, le booléen "false" sera différent de 0 vu que le type booléen est différent du type numérique.
EDIT : D'ailleur, le probléme est expliqué dans la doc de php ( http://fr2.php.net/manual/fr/function.strpos.php ) et le coup du === y est même indiqué en encadré.
Marsh Posté le 02-02-2007 à 10:26:20
Exact, j'ai écrit ça vite.
Marsh Posté le 02-02-2007 à 15:31:43
merci, euh maintenant il me fait le bon teste, seulement il me le fait 4 fois, surement parce qu'il a 3 lignes a mon fichier (+1 de blanc ?)
Ca donne ça:
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
Marsh Posté le 02-02-2007 à 15:45:41
Fais voir ton fichier texte et le code exact que tu as écris.
Marsh Posté le 02-02-2007 à 18:29:05
sielfried a écrit : Fais voir ton fichier texte et le code exact que tu as écris. |
C'est bon j'ai enfin qqch qui marche
Voici le code que tu me demandais précédement:
Code :
|
Et voici celui qui marche:
Code :
|
Par curiosité,j'aimerais quand meme savoir pourquoi le 1er script ne marche pas lol.
merci a tous !
Marsh Posté le 02-02-2007 à 18:37:24
lol... non mais ce que j'avais mis suffisait, y a pas besoin de l'entourer par fopen ou quoi que ce soit...
Marsh Posté le 02-02-2007 à 19:14:18
bah je ne sais pas, ca m'affiche le bon truc, mais en 4 fois, comme ceci:
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
alors que ca devrait etre:
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur3
héhé
Marsh Posté le 02-02-2007 à 19:19:18
Tu lis ce que j'écris ?
Je t'ai écrit le code complet, y a rien d'autre à mettre (juste à remplacer les commentaires par ce dont t'as besoin), si t'arrives pas à faire un simple copier-coller je n'y peux rien...
edit: mais si ta méthode marche tant mieux, je ne dis pas que j'ai la solution parfaite... c'est juste nettement plus propre et concis selon moi.
Marsh Posté le 01-02-2007 à 21:44:18
Bonjour a tous,
j'ai fais ce code pour qu'il lise un fichier texte, et, si une chaine du fichier contient (en 1ere lettre) la lettre X (par exemple),
alors le script affiche qqch.
<?
$fp = fopen("fichier.txt","r" );
while(!feof($fp)) // Tant que l'on n'est pas à la fin du fichier on continue de lire le fichier
{
$ligne = fgets($fp, 1024); //lecture ligne par ligne
if (!feof($fp))
{
$pos = strpos($ligne, 'P', 0);
if ($pos == "0" ) //si la 1ere lettre est un P
{
print "c'est cette ligne qui contient un P:$ligne<br>";
}
else
{
print "$ligne<br>"; //sinon on affiche la ligne normalement
}
}
}
fclose($fp);
?>
voila ce que ca me retourne:
c'est cette ligne qui contient un P:valeur1
c'est cette ligne qui contient un P:Paleur2
c'est cette ligne qui contient un P:valeur3
Alors que j'aimerais qu'elle retourne ceci:
valeur1
c'est cette ligne qui contient un P:Paleur2
valeur2
Voila, je pense que mon soucis est qu'il manque un test pour CHAQUE ligne, mais bon je ne vois pas trop lol
Quelqu'un saurait svp ?
d'avance merci !