使用PHP从图像中提取alt和/或title属性

时间:2010-12-27 07:56:46

标签: php regex

我用它来提取图像的src或图像的完整路径。

preg_match_all('/\< *[img][^\>]*src *= *[\"\']{0,1}([^\"\'\ >]*)/',$content,$matches);

到目前为止它对我有用,我得到了所有图像源的数组。我试图贪婪并从图像标签中捕获alt和title值。

我知道不建议使用正则表达式,但我真的需要一个快速的解决方案。如果图片标签中缺少alt或title,我不希望它返回错误。

任何意见都表示赞赏和道歉。我知道解析器更容易和更合适,但是因为我可以通过preg匹配获得src,我想我也可以得到alt和标题! :)

非常感谢,新年快乐:D

3 个答案:

答案 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,它可以轻松完成。

http://code.google.com/p/phpquery/(好的链接)