我目前正在设计一个包含20个方框的页面,其中每个方框代表一个RSS提要,使用simplepie作为我的解析器。
目前,该脚本会调用每个Feed中的第一张图片,丢弃其余图片并将该图片设置为该框的背景图片。
有20个Feed,我希望尽可能保持代码的小巧和高效。虽然我理解$ feed01的单独设置,但$ feed02是一个必要的混乱邪恶,这是simplepie工作所必需的。
我无法理解的是为什么imageurl()返回一个空值。
任何人都可以告诉我为什么会这样吗?
非常感谢
<?php
require_once('isnotabear/php/autoloader.php');
$feed01 = new SimplePie();
$feed01 -> set_feed_url ('http://link/to/rss01');
$success = $feed01 -> init();
$feed01 -> handle_content_type();
$max = $feed01 -> get_item_quantity(); // Where do we end?
$feed02 = new SimplePie();
$feed02 -> set_feed_url ('http://link/to/rss02');
$success = $feed02 -> init();
$feed02 -> handle_content_type();
$max = $feed02 -> get_item_quantity(); // Where do we end?
$start = (isset($_GET['start']) && !empty($_GET['start'])) ? $_GET['start'] : 0; // Where do we start?
$length = (isset($_GET['length']) && !empty($_GET['length'])) ? $_GET['length'] : 1; // How many per page?
function imageurl()
{
if ($success): foreach($feedin->get_items($start, $length) as $item): $feedin = $item-> get_feed();
{
$replace = preg_match( '@src="([^"]+)"@' , $item->get_content(), $match );
$match = preg_replace ('"src="', '', $match);
$match = str_replace('"', "'", $match);
echo $match[0];
}
endforeach;
endif;
};
?>
<!DOCTYPE HTML>
... YADA YADA YADA ...
<a href="#" style="background-image:url(<?php $feedin = $feed01; imageurl(); ?>)"><div> <span>FEED NAME</span></div></a>
答案 0 :(得分:1)
$success
未在imageurl()
内定义,因此它始终为null / false
function imageurl() {
global $success;
if ($success) { .... }
}
但是不要使用那样的全局变量。将$ success成为参数。它会更清洁。
答案 1 :(得分:0)
这是评论和答案之间的一部分,但我希望空间显示代码。你的函数使用了非常笨拙的PHP语法和一些完全误导性的标点符号:
if(): ... endif;
和foreach(): ... endforeach;
语法非常老套,通常仅在使用PHP作为模板语言时(即在HTML中间)而不是像这样的独立函数中使用< / LI>
{
,}
,缩进与if
和foreach
都不相关; PHP会忽略它们,但它们会让任何阅读代码的人感到困惑;
也会被忽略 - 函数以}
所以你的代码应该看起来像这样(注意我还添加了$success
和$feedin
作为参数,你应该传递给函数):
function imageurl($success, $feedin)
{
if ($success)
{
foreach($feedin->get_items($start, $length) as $item)
{
$feedin = $item->get_feed();
$replace = preg_match( '@src="([^"]+)"@' , $item->get_content(), $match );
$match = preg_replace ('"src="', '', $match);
$match = str_replace('"', "'", $match);
echo $match[0];
}
}
}
哦,你可能想return $match[0]
而不是echo
。否则,无论你传递什么,它仍然会返回null
。