从PHP中的文本中提取图像源 - 需要preg_match_all

fox*_*gga 2 php wordpress preg-match-all

我有一点问题,因为我的preg_match_all运行不正常.

我想要做的是从wordpress中提取post_content 中所有图像的src参数,这是一个字符串 - 而不是一个完整的html文档/ DOM(因此不能使用文档解析器函数)

我目前正在使用下面的代码,不幸的是它太不整洁,仅适用于1个图像src,我想要来自该字符串的所有图像源

preg_match_all( '/src="([^"]*)"/', $search->post_content, $matches);

if ( isset( $matches ) )
{  

foreach ($matches as $match) 
{

if(strpos($match[0], "src")!==false)
{
$res = explode("\"", $match[0]);
echo $res[1];
}

}

}
Run Code Online (Sandbox Code Playgroud)

谁可以请帮助...

Gum*_*mbo 8

使用正则表达式来解析HTML文档可能非常容易出错.就像在你的情况下,不仅IMG元素具有SRC属性(事实上​​,甚至根本不需要是HTML属性).除此之外,也可能是属性值未包含在双引号中.

更好地使用HTML DOM解析器,如PHP的DOMDocument及其方法:

$doc = new DOMDocument();
$doc->loadHTML($search->post_content);
foreach ($doc->getElementsByTagName('img') as $img) {
    if ($img->hasAttribute('src')) {
        echo $img->getAttribute('src');
    }
}
Run Code Online (Sandbox Code Playgroud)