在PHP 5中需要正则表达式帮助

时间:2011-02-22 22:40:39

标签: php regex html-parsing

确定。不可否认,我不是最适合使用正则表达式的人。我正在做的是屏幕刮擦,然后尝试修复嵌入图像中的img src值以指回原始域。这是正在尝试变体的正则表达式(太多要列出 - 这是当前的变体):

preg_match_all('/<img\b[^>]*>/i', $html, $images);  

最终做的是用<替换所有/>。我需要它做的只是返回页面中的(当前)五个图像的数组,以便我可以使用它们来修复它们的src值,然后将它们写回$ html,这是在开头设置的档案:

$html = file_get_contents($target_url);

1 个答案:

答案 0 :(得分:5)

基本上,不要使用正则表达式执行此操作。 可以 使用正则表达式解析HTML,但几乎肯定不值得付出努力。

使用DOMDocument类:

,使用真正的DOM解析来实现
$dom = new DOMDocument;
$dom->loadHTML($html);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
    $image->setAttribute('src', 'http://example.com/' . $image->getAttribute('src'));
}
$html = $dom->saveHTML();