Php aidez moi si vous plait

Résolu
layeures Messages postés 310 Statut Membre -  
nEm3sis Messages postés 722 Statut Membre -
Bonjour,
voici le code qui ne marche pas

$words = file('texte3.txt');
$word = 'ligne7';
if(in_array($words, $word)){
echo "le mot exite";
}
else{
//
echo "le mot n existe pas";
}
ca m affiche ce message d'erreur

Warning: Wrong datatype for second argument in call to in_array in c:\program files\easyphp\www\labo modifier fichier\testa.php on line 4
lemot nexite pas
Configuration: Windows XP Internet Explorer 7.0

26 réponses

  • 1
  • 2
  1. zoby44 Messages postés 868 Statut Membre 199
     
    Salut, pourquoi utiliser un in_array ? Utilise plutôt preg_match, si c'est juste pour de l'analyse dans une chaine c'est plus simple a mettre en place.
    <?php
    	$filename = "texte3.txt";
    	$handle = fopen($filename, "rb");
    	$words = fread($handle, filesize($filename));
    	fclose($handle);
    	
    	$word = '/ligne5/';
    	if(preg_match($word, $words)){
    		echo "le mot existe";
    	}
    	else{
    		echo "le mot n existe pas";
    	} 
    ?>
    

    fread() permet de stocker un fichier dans une variable. Ça évite de mettre WHILE($ligne = fget()).
    1
  2. layeures Messages postés 310 Statut Membre 3
     
    un tres tres tres tres tres tres tres grand merci de votre aide
    le code qui marche est

    <?php

    $words = file_get_contents("texte3.txt");
    $word = 'ligne4';
    if( strpos($words, $word) !== false ){
    echo "le mot existe";
    }else{
    echo "le mot n'existe pas";
    }

    ?>

    le probleme venai aussi du serveur qui est esayphp 1.6 j ai tester le code sur esayphp3 est ca a marcher

    merci mille foie
    1
  3. nEm3sis Messages postés 722 Statut Membre 113
     
    Bonjour tout est expliquer dans la doc sur comment utiliser in_array
    http://fr3.php.net/manual/fr/function.in-array.php
    regarde bien le type des paramètre c'est la que tu t'es planté, en inversant les 2
    0
  4. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    aissaie:
    <?php
    
    $fichier=fopen("texte3.txt","r");
    while($ligne=fgets($fichier));
    {
    words[]=ligne;
    }
    fclose($fichier);
    $word = 'ligne7';
    if(in_array($words, $word)){
    echo "le mot exite";
    }
    else{
    //
    echo "le mot n existe pas";
    } 
    
    
    0
    1. nEm3sis Messages postés 722 Statut Membre 113
       
      tu propose quelque chose de plus compliqué qui ne résout pas le problème ....
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    est ce la même erreur ?
    0
    1. nEm3sis Messages postés 722 Statut Membre 113
       
      oui si on ne compte pas les 2 $ que tu as oublié ligne 6

      regarde mon premier post j'ai tout dis
      0
  7. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    c'est bon j'ai trouvé il faut que tu inverse $words et $word dans ta fonction in_array
    0
    1. nEm3sis Messages postés 722 Statut Membre 113
       
      c'est ce que j'ai dis dans mon premier post ...
      0
  8. layeures Messages postés 310 Statut Membre 3
     
    <?php

    $fichier=fopen("texte3.txt","r");
    while($ligne=fgets($fichier));
    {
    $words=$ligne;
    }
    fclose($fichier);
    $word = 'ligne3';
    if(in_array($words, $word)){
    echo "le mot exite";
    }
    else{
    //
    echo "le mot n existe pas";
    }
    ?>

    LE CODE NE MARCHE PAS
    IL AFFFICHE
    Warning: Wrong datatype for second argument in call to in_array in c:\program files\easyphp\www\labo modifier fichier\testa.php on line 10
    le mot n existe pas

    NORMALEMENT IL DEVRAIT AFFICHER LE MOT EXISTE
    0
  9. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    <?php

    $fichier=fopen("texte3.txt","r");
    while($ligne=fgets($fichier));
    {
    $words=$ligne;
    }
    fclose($fichier);
    $word = 'ligne3';
    if(in_array($word, $words)){
    echo "le mot exite";
    }
    else{
    //
    echo "le mot n existe pas";
    }
    ?>
    0
    1. nEm3sis Messages postés 722 Statut Membre 113
       
      ça ne marchera pas non plus ...

      il faudrait que tu test avant de poster ça éviterait que tu postes encore des codes qui buguent ...
      0
  10. layeures Messages postés 310 Statut Membre 3
     
    j ai inverse words et word est ca ne m affiche plus de message d erreur mes ca m affiche a l ecran
    le mot n exite pas alors que ligne5 ce trouve dans le fichier texte
    d ou vient le probleme
    <?php

    $fichier=fopen("texte3.txt","r");
    while($ligne=fgets($fichier));
    {
    $words[]=ligne;
    }
    fclose($fichier);
    $word = 'ligne5';
    if(in_array($word, $words)){
    echo "le mot exite";
    }
    else{
    //
    echo "le mot n existe pas";
    }
    ?>
    0
  11. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    on notera que mon script marchait parfaitement sans compter les 2 $ que j'avais oublié je me damande pourquoi tu a enlevé les 2 crochets à words[].
    0
  12. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    testé sous easy php 3.0
    <?php
    
    $fichier=fopen("texte3.txt","r");
    while($ligne=fgets($fichier));
    {
    $words[]=$ligne;
    }
    fclose($fichier);
    $word = 'ligne3';
    if(in_array($word, $words)){
    echo "le mot exite";
    }
    else{
    echo "le mot n existe pas";
    }
    ?> 
    0
  13. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    de toute façon le code ne générait pas d'erreur mais ne fonctionnait pas -_-
    celui la marche vraiment :
    <?php
    
    $words=file("texte3.txt");
    $word = 'ligne3';
    if(in_array($word, $words)){
    echo "le mot exite";
    }
    else{
    echo "le mot n existe pas";
    }
    ?> 
    0
  14. nEm3sis Messages postés 722 Statut Membre 113
     
    :o je viens de me rendre compte que avec in_array ça marche pas en fait sauf si le mot cherché est une ligne complète du fichier

    voici encore une autre version

    <?php
    
    $words = file_get_contents('texte3.txt');
    $word = 'ligne7';
    if( strpos($words, $word) !== false ){
    	echo "le mot existe";
    }else{
    	echo "le mot n'existe pas";
    }
    
    ?>
    0
  15. layeures Messages postés 310 Statut Membre 3
     
    j ai tester ce code est ca ne marche pas

    <?php

    $words=file("texte3.txt");
    $word = 'ligne3';
    if(in_array($word, $words)){
    echo "le mot exite";
    }
    else{
    echo "le mot n existe pas";
    }
    ?>
    0
  16. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    encore plus simple :

    <?php

    $words = file_get_contents('texte3.txt');
    $word = 'ligne7';
    if(ereg($word,$words)){
    echo "le mot existe";
    }else{
    echo "le mot n'existe pas";
    }

    ?>
    0
  17. layeures Messages postés 310 Statut Membre 3
     
    re bonjour

    je voudrai savoir maintenant comment je peu faire pour que le code ecrit a la fin du fichier si le mot ne ce trouve pas dans le fichier

    merci d'avance de votre aide
    0
  18. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    tu ajoute :

    else
    {
    fopen("texte3.txt","a");
    fputs($word);
    }

    0
  19. layeures Messages postés 310 Statut Membre 3
     
    re bonjour

    <?php

    $words = file_get_contents("texte3.txt");
    $word = 'ligne4';
    if( strpos($words, $word) !== false ){
    echo "le mot existe";
    }else{
    echo "le mot n'existe pas";
    fopen("texte3.txt","a");
    fputs($word);
    }

    ?>

    le probleme avec ce code si qui m affiche un message d'erreur genre :

    Warning: file_get_contents(texte3.txt): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\nouveau dossier (3)\testa.php on line 3
    le mot n'existe pas
    Warning: Wrong parameter count for fputs() in c:\program files\easyphp1-8\www\nouveau dossier (3)\testa.php on line 10

    est aussi il y a un autre probleme c est qu il cree un autre fichier vide.
    0
  20. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
     
    ben d'après lerreur le fichier texte3.txt n'esxiste pas
    0
  21. nEm3sis Messages postés 722 Statut Membre 113
     
    Warning: file_get_contents(texte3.txt): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\nouveau dossier (3)\testa.php on line 3 

    pour éviter ça rajoute un test avec file_exists

    Warning: Wrong parameter count for fputs() in c:\program files\easyphp1-8\www\nouveau dossier (3)\testa.php on line 10 

    tu as oublié de regarder comment on utilise fputs ... -> https://www.php.net/manual/fr/function.fputs.php
    0
    1. seabust Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   102
       
      la c'est ma faute pour fputs jé mi ca de tete sans regarder le menuel php
      0
  • 1
  • 2