|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
Bonjour,
Je voudrais pouvoir rechercher du texte dans un fichier texte. Au final je voudrai que ça m'affiche la ligne ou mon terme à été trouvé. J'ai fait cela mais ça ne me retourne rien... J'ai remarqué que je ne rentrais pas dans la boucle " while (!feof($pointeur))" mais je ne sais pas pourquoi. Pouvez vous m'aidez svp. Merci d'avance Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
Salut,
Concernant l'affichage de la ligne, regarde la fonction file(), cela pourra t'être utile : http://www.php.net/file Sinon pour ton problème, j'imagine que l'echo "tata" c'est pour tester si tu es bien dans ta boucle ? Est-ce que tu peut le mettre apres ton premier if ? Car ton while m'a l'air correct. S'il ne passe pas, c'est peut-être que tu ouvres un fichier vide ou bien que le chemin est faux ? Sinon pour ton premier if, s'il sert à tester si le fichier existe, tu as aussi la fonction file_exists() qui serait plus approprié : http://www.php.net/file_exists Voila voila, ++ ShinJava
__________________
Petit débutant deviendra grand... débutant |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
merci pour ta réponse.
effectivement le echo "tata" c'est pour tester... Je rentre bien dans mon if mais pas dans le while, je ne sais pas pourquoi... |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
Dans ce cas là, a quoi correspond C_CHEMIN ?
Peut etre que le chemin n'est pas bon ? Si ton repertoire /lang/ ce trouve à la racine de ton site , essaye cette méthode pour ouvrir le fichier : Code :
$url = $_SERVER['DOCUMENT_ROOT']."/lang/fr/textes.inc.php";
__________________
Petit débutant deviendra grand... débutant |
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
je viens de tester pour le chemin du fichier et c'est bon.
J'ai par contre créer un fichier .txt à la place et la il rentre dans la boucle... Pourquoi ne veut il pas rentrer dans mon fichier.php, il l'interprete differement ? De plus, en testant avec un fichier.txt ,j'ai une erreur à chaque itération de mon while pour la ligne: Code :
Warning: Unknown modifier 't' in... |
||
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
Normalement ca ne doit pas poser de problème pour lire un fichier .php, tu as fait le test de file_exists() ?
Je viens d'essayer de lire un fichier.php chez moi, et je n'ai eu aucun problème. Sinon pour le preg_match, j'ai un peu de mal à le saisir, à quoi correspond $r ?
__________________
Petit débutant deviendra grand... débutant |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
J'ai trouvé d'où venait la derniere erreur:
if (preg_match('# toto #', $ligne, $r)) il interprete mal le fait que ce soit une variable à la place de "toto". Par contre toujours pas de solution pour mon probleme quand le fichier est en .php |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
Je viens de tester avec le file_exist et en effet ça me dit que mon fichier n'existe pas, je ne comprend pas pourquoi ?
|
|
|
00
|
|
|
#9 | ||
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
La variable doit normalement passer.
Je me suis basé sur ton exemple pour coder un mini truc et cela fonctionne : Code :
A part le fait que le chemin ne soit pas bon, je ne vois pas qu'elle est le problème...
__________________
Petit débutant deviendra grand... débutant |
||
|
|
00
|
|
|
#10 | |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
Citation:
A la fin de ton code fait : Tu verra surement d'ou vient le problème.
__________________
Petit débutant deviendra grand... débutant |
|
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
j'ai fait un echo $url et ça m'affiche bien le bon chemin, je l'ai copié dans ma barre d'adresse et j'arrive bien au fichier...
Je comprend plus rien.. |
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
J'étais parti mangé
Bon j'ai une question : que retourne ton $url ? Une url de style http:// ou bien le chemin vers ton fichier (genre c:/ pour windows). S'il s'agit effectivement d'un http:// , ca doit normalement poser un problème avec un fichier php (t'imagines si on pouvait ouvrir n'importe quel fichier .php de n'importe quel site...). En gros ton fopen() prendra en compte uniquement l'affichage sur ton navigateur (il me semble). C'est pour ça que cela fonctionnerait sans problème avec un fichier texte (comme dans ton cas plus haut). Dans le cas où ton $url retourne effectivement un lien internet, je préconise la solution que j'ai proposé plus haut avec le $_SERVER['DOCUMENT_ROOT']. Voila voila ++ ShinJava
__________________
Petit débutant deviendra grand... débutant |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
Oui il s'agit d'un htpp...
http://127.0.0.1/serveurweb/dvpt_fr/...textes.inc.php mais j'ai testé avec $_SERVER['DOCUMENT_ROOT'] et ça me donne ça: c:/program files/easyphp1-8/www/lang/fr/textes.inc.php or mon fichier se trouve : D:\serveurweb\sites\dvpt_fr\lang\fr Comment pourrais je faire? |
|
|
00
|
|
|
#14 |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
Argh j'ai jamais utilisé easyphp. Je ne connais pas trop comment se passe la configuration à l'interieur (faut que tu te renseignes là-dessus)
J'imagine que le site est en test sur ton ordi et que tu l'uploadera sur un serveur ? (si c'est le cas, le $_SERVER['DOCUMENT_ROOT'] fonctionnera). Pour faire fonctionner ton code sur ton ordi, met tout simplement le chemin complet vers ton fichier dans le fopen. Ou bien, créer une variable avec comme valeur le chemin vers le repertoire de la racine de ton site. Comme ca quand tu uploadera le site sur ton serveur, t'aura juste à changer la valeur de cette variable... (un peu comme ton C_CHEMIN)... au fait ton C_CHEMIN a quoi comme valeur ? ++ ShinJava
__________________
Petit débutant deviendra grand... débutant |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
C'est bon j'ai mis l'adresse.
Par contre, je voudrais qua ça me retourne le numero de la ligne où le texte a été trouvé c'est possible ? |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Il suffit que tu te rajoutes un petit compteur dans ta boucle qui va compter le nombre de lignes, comme ca quand tu trouves ton mot tu connais le numéro de la ligne qui va avec
|
|
|
00
|
|
|
#17 |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
enfin
! Alors pour la ligne, je sais pas si tu as jeter un coup d'oeil sur la fonction file(), apparement tu peux faire quelque chose avec. Sinon tu peux tout simplement incrémenter une valeur a chaque passage de ta boucle while. Genre tu déclares $j=1 (on commence a la premiere ligne) et la fin de ta boucle while tu met un $j++... et quand tu es dans ton if preg_match, tu affiche $j. J'ai une petite question sur ton preg_match , à quoi correspond le $r (le 3eme parametre sert à quoi ?) ++ ShinJava
__________________
Petit débutant deviendra grand... débutant |
|
|
00
|
|
|
#18 | |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
Citation:
|
|
|
|
00
|
|
|
#19 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 113 ![]() |
Merci pour votre aide, ça fonctionne nikel !
|
|
|
00
|
|
|
#20 |
|
Membre confirmé
![]() Inscription : septembre 2004 Messages : 411 ![]() |
Cool
, cette petite discussion m'a permis de revoir quelques petites bases. Merci Bonne journée et bon courage la suite ++ ShinJava
__________________
Petit débutant deviendra grand... débutant |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com