【发布时间】:2016-09-08 15:29:23
【问题描述】:
我在使用str_replace 时遇到了一个问题,所以我决定使用preg_replace,但在这里我得到的结果甚至与str_replace 得到的结果相近。
示例代码如下所示:
$find_url = '<h3 class="rcc"><a href="'.$new_url;
$replace = '<h3 class="rcc" style="background-color: #ffff00;"><a href="'.$new_url;
$new_data = preg_replace('/$find_url\b/i', $replace, $data);
其中$data 是file_get_contents 的输出
任何线索为什么preg_replace 在这种情况下不起作用?
【问题讨论】:
-
$new_url中有什么内容?如果它是绝对 url,那么您正在执行preg_replace('/<h3>.....href="http://etc...')并且http://中的/正在终止您的模式,从而导致正则表达式语法错误。坦率地说:不要使用正则表达式来破坏 html。使用 DOM。这就是它的用途。 -
是的,它看起来像我得到的 URL 是绝对的。旁注 - 有关 DOM 如何替换的任何示例?
-
如果您将任意文本插入到模式中,请使用 preg_quote()。
-
我已经用
preg_quote()包裹了$find_url和$replace并得到了输出,但没有被替换。
标签: php replace preg-replace str-replace