2015-11-17 1 views
0

J'essaie de supprimer les mots de malédiction du commentaire entré par l'utilisateur. Les mots de malédiction sont lus à partir d'un fichier texte, mais le problème est que les mots que je lis ne le font pas. correspondre au mot qu'il est censé être. Le problème apparent est le caractère EOL (apparemment), j'ai utilisé str_replace pour remplacer tous les caractères EOL mais cela n'a pas affecté le résultat.Impossible de supprimer les caractères de fin de ligne dans PHP

Voici mon code:

while(!feof($myfile)){ 
    $array[$i]=fgets($myfile); 
    $word=$array[$i]; 
    str_replace("\n","",$word,$count); 
    echo $count; 
    str_replace("\r","",$word,$cont); 
    echo $cont; 
    str_replace("\r\n","",$word,$con); 
    echo $con; 
    str_replace(" ","",$word,$co); 
    echo $co; 
    str_replace(PHP_EOL,"",$word,$c); 
    echo $c; 
    if($word==="anal") 
    echo "afdsfdsa"; 
    $comment= str_replace($word,"****",$comment); 

I downloaded the curse word text file from here Je ne peux pas comprendre quel est le problème. Pourquoi les deux mots ne correspondent-ils pas?

+0

Vous pouvez simplement utiliser $ mot = trim ($ word) ; pour couper tout espace supplémentaire. Notez également que str_replace est sensible à la casse. – kainaw

Répondre

-2

Voici le code révisé

$myfile = 'swearWords.txt'; 
$words=file_get_contents($myfile); 
$array = explode(PHP_EOL,$words); 
$comment = "f*** this s***"; 
$comment= str_replace($array,"Bleep",$comment); 
echo $comment; 

Sortie

+0

Vous voulez un remplacement insensible à la casse, correct? – kainaw

+0

Oui c'est correct, mais quel était le problème dans le code ci-dessus? – Shivam

+0

@Shivam Si vous comparez le code, vous obtenez le contenu du fichier dans la boucle while, cela ne finira jamais la boucle. Deuxièmement, le contenu du fichier n'est pas un tableau, vous le convertissez en un tableau basé sur un séparateur, dans ce cas le nouveau saut de ligne. –

0

Pour chaque mot, pourquoi ne pas essayer:

$file = file_get_contents($myfile); 
$words = explode(PHP_EOL, $file); 
+0

mais comment puis-je corriger le bogue dans mon code? – Shivam

+0

'PHP_EOL' est la nouvelle ligne utilisée par votre paramètre PHP, mais le fichier peut avoir une nouvelle ligne totalement différente. Si 'PHP_EOL' est' \ n' et que les nouvelles lignes dans le fichier sont '\ r \ n', après votre' explode' chaque élément (sauf le dernier) aura un CR final. –