使用 PHP 从图像中提取 alt 和/或 title 属性
Posted
技术标签:
【中文标题】使用 PHP 从图像中提取 alt 和/或 title 属性【英文标题】:Using PHP to extract the alt and/or title attributes from images 【发布时间】:2011-05-31 01:21:02 【问题描述】:我用这个来提取图片的src或者图片的完整路径。
preg_match_all('/\< *[img][^\>]*src *= *[\"\']0,1([^\"\'\ >]*)/',$content,$matches);
到目前为止,它对我有用,我得到了所有图像源的数组。我试图贪婪并从图像标签中捕获 alt 和 title 值。
我知道不建议使用正则表达式来做,但我真的需要一个快速的解决方案。如果图像标签中缺少 alt 或 title,我不希望它返回错误。
感谢您的任何意见并深表歉意。我知道使用解析器更容易也更合适,但是因为我可以通过预赛获得 src,所以我想我也可以获得 alt 和标题! :)
非常感谢,新年快乐:D
【问题讨论】:
你说得对,使用解析器更更容易也更合适。 :) 捕获所有可能组合的正则表达式看起来很糟糕。 尤其是当您后来决定要捕获更多标签时... 好吧,问题是脚本会为很多用户安装在很多公共服务器上,如果解析器不存在或者不能在他们的主机上工作,他们会怪我:)所有服务器都兼容和支持的解析器? 【参考方案1】:使用phpQuery,这很容易。
http://code.google.com/p/phpquery/(好链接)
【讨论】:
是的,但链接有点不对:) 对于懒惰的编码器有没有直接的例子?大声笑..基本上我想在数组中获取 src、alt、标题,这样我就可以遍历它们并显示我的自定义画廊.. 我认为您应该能够在网站上找到示例。一个月前第一次用还是smt,很开心;)【参考方案2】:这是一个使用 PHP 的 DOM 解析器的解决方案:
$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadhtml(file_get_contents("http://***.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"),
);
【讨论】:
问题。这些图像存储在一个名为 $content 的变量中。我可以使用它来代替加载 html 或新文档吗?怎么样? 第三行:$domd->loadHTML($content)
.
哇 :D 它从第一次尝试就起作用了。好吧,这比正则表达式简单。如果某些图像没有 alt 或标题,它不会停止我假设的脚本
不,你只会有空字符串。【参考方案3】:
试试这个,这是我在 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);
【讨论】:
以上是关于使用 PHP 从图像中提取 alt 和/或 title 属性的主要内容,如果未能解决你的问题,请参考以下文章