我有一点问题,因为我的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];
}
}
}
有人可以在这里帮忙......
答案 0 :(得分:8)
使用正则表达式解析HTML文档非常容易出错。就像你的情况一样,IMG
个元素不仅有SRC
attribute(事实上,根本不需要是HTML属性)。除此之外,也可能是属性值未包含在双引号中。
更好地使用像PHP’s DOMDocument这样的HTML DOM解析器及其方法:
$doc = new DOMDocument();
$doc->loadHTML($search->post_content);
foreach ($doc->getElementsByTagName('img') as $img) {
if ($img->hasAttribute('src')) {
echo $img->getAttribute('src');
}
}
答案 1 :(得分:0)
您可以使用带有HTML字符串的DOM解析器,没有必要拥有完整的HTML文档。 http://simplehtmldom.sourceforge.net/