标记的正则表达式属性

时间:2013-11-15 15:36:21

标签: php regex regex-lookarounds

我正在尝试使用regex src属性(没有其内容/值)并将其替换为其他内容。

它还必须验证HTML标记(示例中为img)。

测试数据示例:

<img src="http://example.com" class="something" />

现在我需要只获得“src”并替换它。是否可以将它作为第一个/唯一匹配的PHP中的lookbehind / lookahead?

2 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

preg_replace('/(<img[^>]*src=")[^"]*"/', '$1'.$new.'"', $html)
后视是不可能的,因为它的长度不可变。

答案 1 :(得分:1)

不应使用正则表达式来解析html 相反,修改DOM以执行您需要的操作。

$doc = new DOMDocument();
$doc->loadHTML('<img src="http://example.com" class="something" />');
$images = $doc->getElementsByTagName('img');
foreach ($images as $image) {
    $image->setAttribute('src','http://www.google.com');
    echo htmlentities($doc->saveHTML($image));
}