Php 为什么新的SimpleXMLElement会导致500错误?
我有一个简单的剧本,直到昨天,它已经很好地工作了两年。我只是从一个WP站点获取一个XML提要,并将其格式化以显示在另一个网站上。代码如下: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
<?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(' & ', ' & ', $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提要,其中没有错误-但是在我的页面上仍然没有输出任何内容