Php aidez moi si vous plait
Résoluvoici 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
Un extrait de code PHP visant à vérifier l'existence d'un mot dans texte3.txt générait l'erreur 'Wrong datatype for second argument' lorsque in_array était utilisé avec un tableau de lignes. La solution recommandée consiste à lire le fichier en tableau avec file(), puis à tester l'appartenance du mot via in_array($word, $words), afin d'éviter l'erreur et d'obtenir une réponse fiable. D'autres proposent des alternatives comme preg_match ou strpos avec file_get_contents, ou fread pour lire le fichier en mémoire et effectuer une recherche sur le contenu, notamment. Certaines réponses soulignent que des environnements comme EasyPHP 1.6 ou 3 peuvent influencer le choix entre lire le fichier ligne par ligne et tester l'appartenance, et suggèrent des vérifications d'ouverture et d'encodage.
-
bonjour pourrais tu donner la solution finale s'il te plait ?
pour les suivants qui aurait le même problème
merci =) -
bonsoir a tous
j ai enfin trouver la solution merci touse de votre aide. -
bonjour je vien de modifier le code est le message d erreur ne s'affiche plus met le code ne marche pas
<?php
$words = file_get_contents('texte3.txt');
$word = 'ligne7';
if(ereg($word,$words)){
echo "le mot existe";
}else{
$wa = "texte3.txt";
$fr = fopen ($wa, "a+");
fwrite ($fr,"a");
echo "le mot n'existe pas";
}
?> -
oui c est vrai j ai fait une erreur de frappe j ai mit text3.txt
-
<?php
$words = file_get_contents('texte3.txt');
$word = 'ligne7';
if(ereg($word,$words)){
echo "le mot existe";
}else{
$fr = fopen ($words, "a+");
fwrite ($fr,"a");
echo "le mot n'existe pas";
}
?>
maintenant il m affiche un nouveau message d erreur
Warning: fopen(ligne1 ligne2 ligne3 ligne4 ligne5): failed to open stream: Invalid argument in c:\program files\easyphp1-8\www\nouveau dossier (3)\testa.php on line 9
Warning: fwrite(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\nouveau dossier (3)\testa.php on line 10
le mot n'existe pas -
c est possible d avoir la solution en entier
merci -
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 -
ben d'après lerreur le fichier texte3.txt n'esxiste pas
-
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. -
tu ajoute :
else
{
fopen("texte3.txt","a");
fputs($word);
}
-
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 -
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";
}
?> -
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 -
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";
}
?> -
: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"; } ?> -
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"; } ?> -
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()). -
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"; } ?> -
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[].
-
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";
}
?>
- 1
- 2