<a href="http://www.example.com/foo/bar/" title="foo">
<img src="http://www.example.com/foo/bar/" alt="foo" />
</a>
如何仅在href属性中preg_replace单词 foo ?
注意:页面上有多个链接。
答案 0 :(得分:1)
你可以这样做:
$str = preg_replace('/(href="[^"]*)foo/', '$1replacement', $str);
或者,您可以使用lookbehind:
$str = preg_replace('/(?<=href="[^"]*)foo/', 'replacement', $str);
请注意,只有在您的属性中没有'
分隔属性且没有转义"
时,此功能才有效。
这就是为什么你应该really考虑使用DOM解析器,而不是用正则表达式操纵HTML。
更新:以下是使用解析器的正确实现(我刚刚选择了PHP Simple HTML DOM Parser,因为它是第一个出现在Google上的人):
require "simple_html_dom.php";
$html = file_get_html($filename);
foreach($html->find('a') as $element)
{
$element->href = preg_replace('/foo/', 'replacement', $element->href);
}
现在echo
$html
或将其保存到文件中,将包含正确替换的HTML。 (使用DOM解析器可以很容易。);)