Php 为什么新的SimpleXMLElement会导致500错误?

Php 为什么新的SimpleXMLElement会导致500错误?,php,xml,wordpress,Php,Xml,Wordpress,我有一个简单的剧本,直到昨天,它已经很好地工作了两年。我只是从一个WP站点获取一个XML提要,并将其格式化以显示在另一个网站上。代码如下: <?php function download_page($path){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$path); curl_setopt($ch, CURLOPT_FAILONERROR,1); curl_setopt($ch, CURLOPT_FO

我有一个简单的剧本,直到昨天,它已经很好地工作了两年。我只是从一个WP站点获取一个XML提要,并将其格式化以显示在另一个网站上。代码如下:

<?php
function download_page($path){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$path);
    curl_setopt($ch, CURLOPT_FAILONERROR,1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    $retValue = curl_exec($ch);          
    curl_close($ch);
    return $retValue;
}

$sXML = download_page('https://example.com/tradeblog/feed/atom/');
$oXML = new SimpleXMLElement($sXML);

$items = $oXML->entry;
$i = 0;
foreach($items as $item) {
    $title = $item->title;
    $link = $item->link;
    echo '<li>';
    foreach($link as $links) {
        $loc = $links['href'];
        $href = str_replace("/feed/atom/", "", $loc);
        echo "<a href=\"$href\" target=\"_blank\">";
    }
    echo $title;
    echo "</a>";;
    echo "</li>";
    if(++$i == 3) break;
}

?>


我可以回显$sXML,它将按预期显示整个XML内容。当我尝试回显$oXML时,得到了500错误。任何使用$oXML都会导致500。什么改变了?使用PHP有其他/更好的方法吗?

似乎您的xml源不完全是xml。我尝试使用验证它,但它抛出了一个错误。我也试过了,但也出现了同样的错误。

不确定原因,但这确实有效

<?php
    $rss = new DOMDocument();
    $rss->load('https://example.com/tradeblog/feed/rss2/');

    $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 = 3;
for($x=0;$x<$limit;$x++) {
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
    $link = $feed[$x]['link'];

    echo '<li><a href="'.$link.'" title="'.$title.'">'.$title.'</a></li>';
}

?>


Atom提要返回无效字符,因此,脚本也会失败:因为这是来自WP提要,所以最好尝试跳过或清理包含无效字符的标记吗?我尝试了其他端点,/feed/,/feed/rss2/等,并且在返回的提要中不再出现解析错误。然而,当我使用$oXML=new SimpleXMLElement($sXML)变量时,500错误再次出现。我切换到rss2提要,其中没有错误-但是在我的页面上仍然没有输出任何内容