【发布时间】:2012-02-17 03:32:41
【问题描述】:
我有这段代码可以从 joomla 中的一篇文章中提取第一张图片:
<?php preg_match('/<img (.*?)>/', $this->article->text, $match); ?>
<?php echo $match[0]; ?>
有没有办法提取文章中所有可用的图像,而不仅仅是一个?
【问题讨论】:
我有这段代码可以从 joomla 中的一篇文章中提取第一张图片:
<?php preg_match('/<img (.*?)>/', $this->article->text, $match); ?>
<?php echo $match[0]; ?>
有没有办法提取文章中所有可用的图像,而不仅仅是一个?
【问题讨论】:
我可能首先建议不要使用正则表达式来解析 HTML。您应该使用 appropiate parser,例如使用 libxml 的 DOMDocument::loadHTML。
然后您可以查询所需的标签。像这样的东西可能有效(未经测试):
$doc = new DOMDocument;
$doc->loadHTML($htmlSource);
$xpath = new DOMXPath($doc);
$query = '//img';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
// $entry->getAttribute('src')
}
【讨论】:
使用preg_match_all。而且您需要像这样修改模式以考虑到 img 标签内的尾随“/”。
$str = '<img src="asdf" />stuff more stuff <img src="qwerty" />';
preg_match_all('/<img (.*?)\/>/', $str, $matches);
print_r($matches);
Array
(
[0] => Array
(
[0] => <img src="asdf" />
[1] => <img src="qwerty" />
)
[1] => Array
(
[0] => src="asdf"
[1] => src="qwerty"
)
)
【讨论】: