RegEx用于某些类的链接图像

时间:2015-09-02 17:04:40

标签: php regex

我无法在我的服务器上访问HTML解析器,因此我需要通过RegEx和PHP执行此操作。我希望匹配大型内容字符串中某个类的所有链接图像。

以下是我想要匹配的较大内容字符串中的示例:

<a href='url'><img width="150" height="150" src="url" class="attachment-thumbnail" alt="Description" /></a>

这似乎与class =&#34; attachment-thumbnail&#34;

相匹配
(class=("|"([^"]*)\s)attachment-thumbnail("|\s([^"]*)"))

这似乎匹配从打开的HREF到结束的HREF的所有内容,但它也会在更大的内容字符串中获得其他图像,而这些字符串不具有类=&#34; attachment-thumbnail&#34;

/(<a[^>]*)(href=)([^>]*?)(><img[^>]*></a>)/igm

如何将上述两者结合起来只匹配那些HIFF的图像=&#34; attachment-thumbnail&#34;?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试以下内容:

$html = '<a href="http://www.google.com"><img width="150" height="150" src="url" class="attachment-thumbnail" alt="Description" /></a>';
$doc = new DOMDocument();
$doc->loadHTML($html);
foreach($doc->getElementsByTagName('img') as $item)
{
    $doc->saveHTML($item);
    if ($item->getAttribute('class') == 'attachment-thumbnail')
    {
        echo $item->getAttribute('src');
    }
} 

删除与该类匹配的所有元素&quot; attachment-thumbnail&#39;:

$html = '<a href="http://www.google.com"><img width="150" height="150" src="url" class="attachment-thumbnail" alt="Description" /></a>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
foreach($xpath->query('//div[contains(attribute::class,"attachment-thumbnail")]') as $elem)
{
    $elem->parentNode->removeChild($elem);
}
echo $dom->saveHTML($doc->documentElement);