[resolu] getword

getword [resolu] - PHP - Programmation

Marsh Posté le 10-02-2006 à 16:53:19    

Salut, je bloque sur une fonction que j'aimerais creer :
Cette fonction doit me renvoyer 1 si elle trouve le mot ($contents), et 0 sinon.
 

Code :
  1. function getword( $handle, $contents )
  2. {
  3. $i = strlen($contents) ;
  4.    while( !feof( $handle ))
  5.    {
  6.      $no = 0 ;
  7.  $total = "" ;
  8.      $z = 0 ;
  9.          while(!feof($handle) || $no!=1 )
  10.   {
  11.    $tmp = fgetc($handle) ;
  12.    if($contents[$z]==$tmp)
  13.    {
  14.     if($z==($i-1))
  15.     {
  16.      $total = ''.$total.''.$tmp.'';
  17.      if(strcmp($total,$contents)==0)
  18.       return 1 ;
  19.     }
  20.     else
  21.     {
  22.      $total = ''.$total.''.$tmp.'';
  23.      $z++ ;
  24.     }
  25.    }
  26.    else
  27.     $no=1;
  28.   }
  29.    }
  30.    return 0 ;
  31. }


 
Le probleme est qu'elle me renvois 1 tout le temps  :??:  
Ou ai-je pu merder ?


Message édité par Maybe3 le 10-02-2006 à 17:50:47
Reply

Marsh Posté le 10-02-2006 à 16:53:19   

Reply

Marsh Posté le 10-02-2006 à 17:15:16    

Tu veux verifier si un fichier texte contient un mot bien particulier ?

Reply

Marsh Posté le 10-02-2006 à 17:18:48    

Oui, enfin pas forcément un fichier texte, elle doit aussi verifier ça sur des url donc pas de fseek possible.
fopen ouvert en "rb", j'ai essyé de debuguer avec des echo et tout a l'air correct, le fichier s'ouvre bien, ma variable $total se rempli au moment ou je parcours le fichier (j'ai esseyé d'afficher les mots d'avant et d'apres, c'est correct).
Ce qui est bizare c'est que quand le mot n'existe pas il le trouve quand meme, je sais pas trop comment débuguer ça, j'ai testé plein de truc mais je ne comprends pas pourquoi  :sweat: .


Message édité par Maybe3 le 10-02-2006 à 17:25:09
Reply

Marsh Posté le 10-02-2006 à 17:49:54    

YES !
C'est bon en fait j'ai passé les initialisations de total et z dans le else{no=1} et ça fonctionne impecable :)
En fait ca me parais logique maintenant mais j'ai du loucher en debuguant mentalement, je retournais au while d'avant ou une connerie du style :D

Reply

Marsh Posté le 10-02-2006 à 17:52:32    

file_get_contents :  stocke dans une variable.
 
et strpos pour determiner s'il y a moins une occurence dans dans la chaine


---------------
MZP est de retour
Reply

Marsh Posté le 10-02-2006 à 17:57:42    

Ouais j'ai entendu parler de ces fonctions mais je débute en php et ces fonctions utilisent des parametres que je ne connais pas encore et qui me font tres peur lol.
Donc comme je viens du C, j'essai de rester proche :D

Reply

Marsh Posté le 10-02-2006 à 18:03:23    

Paramètres qui font peur ? o_O
 
$text = file_get_contents('monfichier.ext');
strpos($text , 'mot_a_chercher');
 
fpas déconner ...

Reply

Marsh Posté le 10-02-2006 à 18:12:39    

Citation :

string  file_get_contents ( string   filename  , int   use_include_path  , resource   context  )
 
file_get_contents est identique à la fonction readfile , hormis le fait que file_get_contents retourne le fichier filename dans une chaîne.
Note
 
Cette fonction a été introduite en PHP 4.3.0.
Note
 
Cette fonction gère les chaînes binaires
Array
Note
 
Le support de l'argument context sera ajouté en PHP 5.0.


 

Citation :

$text = file_get_contents('monfichier.ext');


 
C'est sur, si je l'aurais vu comme ça j'aurais peut etre esseyer mais le prototype la haut parle de resource et de array, je preferais ne pas trop me lancer dans l'inconnu mais la ca m'interesse, je regarderais ca quand j'aurais 5 minutes, merci  ;)

Reply

Marsh Posté le 10-02-2006 à 18:19:19    

Y a une belle phrase tout en francais qui explique chaque parametre.

Citation :


string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] )
 
file_get_contents() retourne le fichier filename dans une chaîne, à partir de la position offset, et jusqu'à maxlen octets.
Le paramètre context peut être éludé par la valeur NULL.
Vous pouvez utiliser l'option use_include_path : en la mettant à "1", vous rechercherez aussi dans le dossier include_path.
En cas d'erreur, file_get_contents() retourne FALSE.


Message édité par afbilou le 10-02-2006 à 18:20:39
Reply

Marsh Posté le 10-02-2006 à 18:38:52    

Pas mal Pas mal, interessant...
En tout cas le PHP est bien pratique pour traiter les url, pasqu'avec les socket j'en chiais un max !
La seule chose qui est dommage c'est qu'il n'y pas de fseek virtuel. Mais je vais me creer la fonction s'il faut.

Reply

Marsh Posté le 10-02-2006 à 18:38:52   

Reply

Marsh Posté le 10-02-2006 à 18:55:20    

Ah, aussi y'a un truc que j'ai pas bien compris pour strpos par exemple il faut le tester avec ===
C'est la premiere fois que je vois cet opérateur et je n'ai pas encore trouvé de tutoriel portant la dessus.
Si quelqu'un a un site qui compare le php au c en expliquant bien les differences, jes uis preneur :)

Reply

Marsh Posté le 10-02-2006 à 19:01:50    

Maybe3 a écrit :

Ouais j'ai entendu parler de ces fonctions mais je débute en php et ces fonctions utilisent des parametres que je ne connais pas encore et qui me font tres peur lol.
Donc comme je viens du C, j'essai de rester proche :D


 
 
Y'a de l'abus, il faut 2 pauvres parametres  [:payzan]


---------------
MZP est de retour
Reply

Marsh Posté le 10-02-2006 à 19:03:36    

Maybe3 a écrit :

Ah, aussi y'a un truc que j'ai pas bien compris pour strpos par exemple il faut le tester avec ===
C'est la premiere fois que je vois cet opérateur et je n'ai pas encore trouvé de tutoriel portant la dessus.
Si quelqu'un a un site qui compare le php au c en expliquant bien les differences, jes uis preneur :)


 
Tu ne dois pas beaucoup chercher. == test sur la valeur et converti les typages si necessaire. Donc tu peux comparer des choux et des carottes. === compare le type et le contenu.


---------------
MZP est de retour
Reply

Marsh Posté le 10-02-2006 à 19:04:13    

Maybe3 a écrit :

Ah, aussi y'a un truc que j'ai pas bien compris pour strpos par exemple il faut le tester avec ===
C'est la premiere fois que je vois cet opérateur et je n'ai pas encore trouvé de tutoriel portant la dessus.


Ca compare les deux expressions et ca renvoie true si elle sont exactement identiques. C'est parce que le PHP n'est pas très typé.
 
Par exemple 1=='1' renvoie true alors que 1==='1' renvoie false

Reply

Marsh Posté le 10-02-2006 à 20:54:21    

Ah ok !!
En effet, c'est cool de ne pas avoir a definir le type et c'est encore mieux de pouvoir le tester au cas ou :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed