我目前正在开发一种替换工具,该工具将使用 smarty 输出过滤器动态替换网站中的某些字符串(包括 html)。
为了进行替换,我使用 PHP 的str_ireplace
方法,它从数据库中读取应该替换的代码和替换代码,然后将结果传递给 smarty 输出(使用输出过滤器),类似方式如下。
$tpl_source = str_ireplace($replacements['sourceHTML'], $replacements['replacementHTML'], $tpl_source);
问题是,虽然它在我的开发服务器上运行良好,但一旦上传到实时服务器,替换偶尔会失败。不过,相同的替换在我的开发版本上工作得很好。经过一些检查和谷歌搜索后,我无法找到关于这个问题的太多信息。所以我的问题是,什么会影响str_replace
' 的行为?
谢谢
使用替换示例进行编辑:
$htmlsource = file_get_contents('somefile.html');
$newstr = str_replace('<a href="http://www.somelink">Some text</a>', 'sometext', $htmlsource); // the text to be replaced does exist in the html source
无法更换。经过一番检查,看起来 "> 的组合会产生问题。但只是它的组合。如果我尝试仅更改 (") 它有效,如果我尝试仅更改 (>) 它有效。