【发布时间】:2015-04-11 16:10:14
【问题描述】:
我想替换 HTML 字符串中的一个词,但如果该词在 'img' 元素的属性中,我想排除替换。
例子:
$word = 'google';
$html = 'I like google and here is its logo <img src="images/google.png" alt="Image of google logo" />';
$replacement = '<a href="http://google.com">Google</a>';
$result = preg_replace('/\s'.($word).'/u', $replacement, $html);
preg_replace 还将替换 'src' 和 'alt' 属性中的“google”单词,我希望它只替换 'img' 元素之外的单词。
【问题讨论】:
-
您所要求的不可能以可靠的方式完成。正则表达式是一个很棒的工具,但并非适用于所有任务。您想为此类任务使用 DOM 解析器。
-
@arkascha 似乎可以使用正则表达式! stackoverflow.com/a/29580308/3933332
-
@Rizier123 我从来没有声称这是不可能的,是吗?这种方法的问题是你永远不会得到一个可靠的解决方案。您总是会发现更多情况下它无法按预期工作并且您必须一次又一次地修复它。
-
@arkascha 你能提供一个简单的代码来使用 DOM 解析器吗?
标签: php regex html-parsing preg-replace