无法删除PHP中的行尾字符

无法删除PHP中的行尾字符,php,preg-match,str-replace,file-read,end-of-line,Php,Preg Match,Str Replace,File Read,End Of Line,我正在尝试从用户输入的评论中删除诅咒词。诅咒词是从文本文件中读取的, 但问题是我读到的单词与它的本意不符。 明显的问题是EOL字符(显然),我使用str_replace替换了所有的EOL字符,但它并不影响结果 这是我的密码: while(!feof($myfile)){ $array[$i]=fgets($myfile); $word=$array[$i]; str_replace("\n","",$word,$count); echo $count; s

我正在尝试从用户输入的评论中删除诅咒词。诅咒词是从文本文件中读取的, 但问题是我读到的单词与它的本意不符。 明显的问题是EOL字符(显然),我使用str_replace替换了所有的EOL字符,但它并不影响结果

这是我的密码:

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);

我想不出是什么问题。为什么两个单词不匹配?

要获得每个单词,为什么不试试:

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

这是修改后的代码

$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;
输出

​ Bleep this Bleep

您只需使用$word=trim($word);删除任何多余的空白。还要注意str_replace是区分大小写的。
PHP_EOL
是PHP设置使用的换行符,但是文件可以有完全不同的换行符。如果
PHP\u EOL
\n
并且文件中的换行符是
\r\n
,则在
分解后,每个项(最后一项除外)都将有一个尾随CR。是的,这是正确的,但上面的代码有什么错误?@Shivam如果比较代码,则会在while循环中获得文件内容,这永远不会结束循环。其次,文件内容不是数组,您可以将其转换为基于分隔符的数组,在本例中是新行馈送。@LuckyChingi while循环将结束,我同意第二部分。顺便说一句:。除了欢闹。读者注意:如果从
“fuck”
更改为
“f***”
,代码将被破坏(请参阅)。您必须更改
$comment
的内容,以包含swearWords文件中的实际字符串,才能使其生效。