【问题标题】:Illegal string offset 'date'非法字符串偏移“日期”
【发布时间】:2016-04-16 13:47:15
【问题描述】:

我正在尝试将朋友的 Wordpress 网站升级到最新版本的 Wordpress 和 PHP。 一切正常,除了他在主页上使用的滚动新闻自动收报器出现“非法字符串偏移'日期'”错误,并且没有显示任何新闻。 这是脚本:

<?php
$xmlOption = get_option('xmlFeed');
if (!isset($xmlOption)) {
    $buildURL = "https://wordpress.org/news/feed/";
    $request  = curl_init();
    curl_setopt($request, CURLOPT_URL, $buildURL);
    curl_setopt($request, CURLOPT_HEADER, false);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($request);
    curl_close($request);
    $xml     = new SimpleXMLElement($result);
    $channel = $xml->channel;
    delete_option('xmlFeed');
    $otion = array(
        'xml' => $channel,
        'date' => date('y-m-d')
    );
    add_option('xmlFeed', $option);
}
if ($xmlOption['date'] == date('y-m-d')) {
    $channel = $xmlOption['xml'];
} else {
    $buildURL = "https://wordpress.org/news/feed/";
    $request  = curl_init();
    curl_setopt($request, CURLOPT_URL, $buildURL);
    curl_setopt($request, CURLOPT_HEADER, false);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($request);
    curl_close($request);
    $xml     = new SimpleXMLElement($result);
    $channel = $xml->channel;
    delete_option('xmlFeed');
    $otion = array(
        'xml' => $channel,
        'date' => date('y-m-d')
    );
    add_option('xmlFeed', $option);
}
$i = 0;
while ($i <= 5) {
    echo "<li><a href='" . $channel->item->$i->link . "' target='_blank'>" . $channel->item->$i->title . "</a></li>";
    $i++;
}
?>

我注意到两次使用了 $otion,我认为这可能是一个错字。但是当我将其更改为 $option 时,页面的其余部分没有被解析,所以我想这不是问题。

因为我不是编码员,所以我现在已经拉了 2 个晚上的头发了。 是时候在我一无所有之前得到一些帮助了。 任何人都可以帮我解决这个问题吗?

【问题讨论】:

  • 我最初的猜测是$otion 一个错字,应该是$option(即使它会停止页面)。否则,以下行将在哪里得到它的 $option 数组:add_option('xmlFeed', $option); 所以修正错字(因为你必须),然后检查你的错误日志/打开错误报告,看看然后吐出什么错误。
  • 所以我对 $otion 的直觉是正确的。我更改了代码,我可以在日志中找到的错误是:'PHP Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed' 同时我会在谷歌上搜索
  • "同时我会用谷歌搜索" 既然谷歌的前 5 个结果通常会把你带回 StackOverflow,为什么还要麻烦呢?只需使用此处的搜索工具;)为您节省往返行程。

标签: php wordpress rss simplexml


【解决方案1】:

这不是我的问题的真正答案,但我发现 another script 进行了一些小改动,效果很好。所以我很高兴。

<?php $rss = new DOMDocument(); $rss->load('http://wordpress.org/news/feed/'); $feed = array(); foreach ($rss->getElementsByTagName('item') as $node) { $item = array ( 'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, ); array_push($feed, $item); } $limit = 5; for($x=0;$x<$limit;$x++) { $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); $link = $feed[$x]['link']; echo '<li><a href="'.$link.'" title="'.$title.'" target="_blank">'.$title.'</a></li>'; } ?>

它更小更干净。 感谢您的帮助@Marcus

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 2020-11-29
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多