我正在尝试制作一个简单的PHP脚本,以便在html文本中查找所有图像中的所有src属性,然后在进行一些条件更改后将所有找到的srcs替换为一些文本。
这样的事情:
@preg_match_all('/<img\s src="([a-zA-Z0-9\.;:\/\?&=_|\r|\n]{1,})"/isxmU', $body, $images);
现在我已将所有srcs放入$ images变量中,现在我制作:
foreach ($images as $img) {
..my changes here..
}
现在......我怎样才能将更改过的srcs恢复到$ body变量?
非常感谢,答案 0 :(得分:5)
您应该查看preg_replace_callback()
,这将允许您使用回调函数对您喜欢的每个匹配进行后处理。 (您将使用它而不是preg_match_all()
,而不是它。)
答案 1 :(得分:4)
使用HTML DOM解析器,更容易使用和维护http://simplehtmldom.sourceforge.net/
答案 2 :(得分:1)
I asked a question yesterday关于修改和遍历HTML文件的良好界面。您可能对此感兴趣:
<强> jQuery port to PHP 强>
如果您已熟悉jQuery的API,这可能是一个不错的选择。
答案 3 :(得分:0)
如果您需要使用格式错误的HTML,那么非验证解析器可能会更好。
答案 4 :(得分:-1)
我认为您正在寻找的最简单的答案是做一个str_replace。
foreach ($images as $img) {
..my changes here..
$body = str_replace($original_string, $modified_string, $output_body);
}
答案 5 :(得分:-2)
你想要的不是preg_replace
吗?使用e
修饰符时,替换文本为eval
'd,因此您可以使用与要替换的文本相同的函数执行与foreach
相同的操作}循环。
编辑:preg_replace_callback
比使用e
preg_replace
修饰符更清晰,在编写我的anser时没有想到这一点,所以混乱答案更好。