使用 simpleXML 解析打印缩略图 - 如何 return 全部?
Printing thumbnails using simpleXML parse - how to return all?
我在这里寻找这个问题的答案,但我似乎找不到与这个特定问题相关的任何内容。
我目前正在使用 simpleXML 解析 RSS 提要,以便通过节点解析 "media:thumbnail" 来 return 缩略图。我已经设法做到这一点和 return 所有缩略图 URL,所以我知道我得到了正确的内容,如下所示:
<?php
$url = "http://feeds.bbci.co.uk/news/rss.xml?edition=uk";
$xml = simplexml_load_file($url);
foreach($xml->channel->item as $item) {
$media = $item->children('media', 'http://search.yahoo.com/mrss/');
foreach($media->thumbnail as $thumb) {
echo $thumb->attributes()->url;
}
}
?>
这会回显所有图片网址。但是当我将它存储到一个变量中并稍后尝试将其作为 img src 回显时,它只有 return 一个图像,而不是所有图像:
<?php
$url = "http://feeds.bbci.co.uk/news/rss.xml?edition=uk";
$xml = simplexml_load_file($url);
foreach($xml->channel->item as $item) {
$media = $item->children('media', 'http://search.yahoo.com/mrss/');
foreach($media->thumbnail as $thumb) {
$image = $thumb->attributes()->url;
}
}
?>
<div><img src = <?php echo $image; ?> /></div>
如何将所有 URL 回显到单个图像中?感谢观看。
由于您正在获取并期望多个图像 url,不妨将它们存储在一个数组中:
$images_container = array();
foreach($xml->channel->item as $item) {
$media = $item->children('media', 'http://search.yahoo.com/mrss/');
foreach($media->thumbnail as $thumb) {
$image = $thumb->attributes()->url;
$images_container[] = (string) $image;
}
}
echo '<pre>', print_r($images_container, 1), '<pre>';
现在当然,如果你想处理那些字符串图像 url 数组,那么只需使用和处理容器:
<?php foreach($images_container as $url): ?>
<div><img src="<?php echo $url; ?>" alt="" /></div>
<?php endforeach; ?>
尝试xpath
。
$url = "http://feeds.bbci.co.uk/news/rss.xml?edition=uk";
$xml = simplexml_load_file($url);
$xml->registerXPathNamespace( 'media', 'http://search.yahoo.com/mrss/' );
// get only thumbnails of specified width
$xpath = $xml->xpath( '//media:thumbnail[@url and @width=144]' );
/**
* The above xpath will get only thumbnails of width 144
*/
foreach( $xpath as $node ) {
echo '<div><img src="' . $node['url'] . '" /></div>';
}
希望对您有所帮助。
我在这里寻找这个问题的答案,但我似乎找不到与这个特定问题相关的任何内容。
我目前正在使用 simpleXML 解析 RSS 提要,以便通过节点解析 "media:thumbnail" 来 return 缩略图。我已经设法做到这一点和 return 所有缩略图 URL,所以我知道我得到了正确的内容,如下所示:
<?php
$url = "http://feeds.bbci.co.uk/news/rss.xml?edition=uk";
$xml = simplexml_load_file($url);
foreach($xml->channel->item as $item) {
$media = $item->children('media', 'http://search.yahoo.com/mrss/');
foreach($media->thumbnail as $thumb) {
echo $thumb->attributes()->url;
}
}
?>
这会回显所有图片网址。但是当我将它存储到一个变量中并稍后尝试将其作为 img src 回显时,它只有 return 一个图像,而不是所有图像:
<?php
$url = "http://feeds.bbci.co.uk/news/rss.xml?edition=uk";
$xml = simplexml_load_file($url);
foreach($xml->channel->item as $item) {
$media = $item->children('media', 'http://search.yahoo.com/mrss/');
foreach($media->thumbnail as $thumb) {
$image = $thumb->attributes()->url;
}
}
?>
<div><img src = <?php echo $image; ?> /></div>
如何将所有 URL 回显到单个图像中?感谢观看。
由于您正在获取并期望多个图像 url,不妨将它们存储在一个数组中:
$images_container = array();
foreach($xml->channel->item as $item) {
$media = $item->children('media', 'http://search.yahoo.com/mrss/');
foreach($media->thumbnail as $thumb) {
$image = $thumb->attributes()->url;
$images_container[] = (string) $image;
}
}
echo '<pre>', print_r($images_container, 1), '<pre>';
现在当然,如果你想处理那些字符串图像 url 数组,那么只需使用和处理容器:
<?php foreach($images_container as $url): ?>
<div><img src="<?php echo $url; ?>" alt="" /></div>
<?php endforeach; ?>
尝试xpath
。
$url = "http://feeds.bbci.co.uk/news/rss.xml?edition=uk";
$xml = simplexml_load_file($url);
$xml->registerXPathNamespace( 'media', 'http://search.yahoo.com/mrss/' );
// get only thumbnails of specified width
$xpath = $xml->xpath( '//media:thumbnail[@url and @width=144]' );
/**
* The above xpath will get only thumbnails of width 144
*/
foreach( $xpath as $node ) {
echo '<div><img src="' . $node['url'] . '" /></div>';
}
希望对您有所帮助。