我用它来提取图像的src或图像的完整路径。
preg_match_all('/\< *[img][^\>]*src *= *[\"\']{0,1}([^\"\'\ >]*)/',$content,$matches);
到目前为止它对我有用,我得到了所有图像源的数组。我试图贪婪并从图像标签中捕获alt和title值。
我知道不建议使用正则表达式,但我真的需要一个快速的解决方案。如果图片标签中缺少alt或title,我不希望它返回错误。
任何意见都表示赞赏和道歉。我知道解析器更容易和更合适,但是因为我可以通过preg匹配获得src,我想我也可以得到alt和标题! :)
非常感谢,新年快乐:D
答案 0 :(得分:2)
这是使用PHP的DOM解析器的解决方案:
$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML(file_get_contents("http://stackoverflow.com"));
libxml_use_internal_errors(false);
$items = $domd->getElementsByTagName("img");
$data = array();
foreach($items as $item) {
$data[] = array(
"src" => $item->getAttribute("src"),
"alt" => $item->getAttribute("alt"),
"title" => $item->getAttribute("title"),
);
}
答案 1 :(得分:2)
试试这个,这是我在3分钟内想出来的最好的......
if(preg_match_all('@<img(\s?(src|alt|title)="([^"]+)"\s?)?(\s?(src|alt|title)="([^"]+)"\s?)?(\s?(src|alt|title)="([^"]+)"\s?)?\/?>@si',$content,$m)){
$img_array = array(
$m[2][0]=>$m[3][0],
$m[5][0]=>$m[6][0],
$m[8][0]=>$m[9][0]
);}
print_r($img_array);
答案 2 :(得分:0)
使用phpQuery,它可以轻松完成。