无法删除PHP中的行尾字符
我正在尝试从用户输入的评论中删除诅咒词。诅咒词是从文本文件中读取的, 但问题是我读到的单词与它的本意不符。 明显的问题是EOL字符(显然),我使用str_replace替换了所有的EOL字符,但它并不影响结果 这是我的密码:无法删除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
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文件中的实际字符串,才能使其生效。