-->

str_replace函数不适用于某些情况下工作(str_replace does not work

2019-10-29 06:09发布

我用卷曲得到HTML并将其保存到$内容。 然后我尝试str_replace函数,它不工作:

echo str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications','OK',$content);

但是,当我尝试打印$内容和复制源并再次将其保存到$内容,它的工作原理:

回声$内容; 然后,我复印打印并再次将其保存到$内容:

$content='It is <a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications';

随着新的$内容,更换上述作品。

Answer 1:

尝试把“\“”也。我认为这是这个问题。我不认为‘风格’的标签无关,使差异。



Answer 2:

我的猜测是多余的空格或换行或类似的,请尝试更换块..如

str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" ','OK',$content);
str_replace('" style="cursor: default;">Dojo</a> Applications','OK',$content);

并且尝试找出它失败,那么你就可以追查



Answer 3:

这对我的作品:

<?php
$content='it is <a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications';
echo str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications','OK',$content); 

所以,你可能有串内实际换行符,他们并不在同一个格式编码,例如,一个\n (Linux)的,另一种是\r\n (Windows)中。 您可以正常化之前比较两个字符串:

<?php
$content = strtr($content, array(
    "\r\n" => PHP_EOL,
    "\r" => PHP_EOL,
    "\n" => PHP_EOL,
));

在任何情况下,PHP具有良好的功能来处理HTML 。 我不会推荐的正则表达式的任务:他们是不可靠的,很难得到差不多吧。



文章来源: str_replace does not work for some cases