RegEx用于某些类的链接图像


RegEx for linked images of certain class

我没有访问我的服务器上的HTML解析器,所以我需要通过RegEx和PHP做到这一点。我想在一个大的内容字符串中匹配某一类的所有链接图像。

下面是我想要匹配的更大的内容字符串中的一个示例:

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

这似乎匹配class="attachment-thumbnail"

(class=("|"([^"]*)'s)attachment-thumbnail("|'s([^"]*)"))

这似乎匹配了从开始HREF到结束HREF的所有内容,但它也获得了更大的内容字符串中没有class="attachment-thumbnail"的其他图像

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

我怎样才能把上面两个组合起来,只匹配那些HREFed图像class="attachment-thumbnail"?

谢谢你的帮助。

尝试如下内容:

$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');
    }
} 

删除所有与'attachment-thumbnail'类匹配的元素:

$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);