simplexml_load_string 不适用于 .csp 文件中的 RSS (PHP 5.2)

simplexml_load_string not working for RSS from .csp file (PHP 5.2)

我有一个脚本,当从 RSS 提要中提供 URL 时,它会 returns 一个链表。它在服务器 运行 PHP 5.2 上。该脚本适用于我提供的其他 RSS 提要,但不适用于以下 URL。

URL: https://www.nwp.org/rss.csp

<?php

//SETUP THE VARIABLES
if(!strlen($RSSFEED_URL))   { $RSSFEED_URL = $_GET['url']; } 
if(!strlen($RSSFEED_LIMIT))   { $RSSFEED_LIMIT = abs($_GET['limit']); } 
if(!strlen($RSSFEED_EXCERPT)) { $RSSFEED_EXCERPT = abs($_GET['excerpt']); } 
if(!strlen($RSSFEED_DATE))    { $RSSFEED_DATE = abs($_GET['date']); } 
if(!strlen($RSSFEED_LINK))    { $RSSFEED_LINK = $_GET['link']; } 

//SET DEFAULTS
if($RSSFEED_LIMIT > 15 || !strlen($_GET['limit']))    { $RSSFEED_LIMIT = 5; }
if($RSSFEED_EXCERPT !== 0)              { $RSSFEED_EXCERPT = 1; }
if($RSSFEED_DATE !== 0)               { $RSSFEED_DATE = 1; }

//CONNECT THE FEED
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, .6);
curl_setopt($ch, CURLOPT_URL, $RSSFEED_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, false);
$RSSFEED_CONTENTS = curl_exec($ch);
$RSSFEED_CONTENTS = preg_replace('/&(?![A-Za-z0-9#]{1,7};)/','&amp;',$RSSFEED_CONTENTS);

curl_close($ch);

if($RSSFEED_CONTENTS){

  $RSSFEED = simplexml_load_string($RSSFEED_CONTENTS);
  if(!strlen($RSSFEED_LINK)) { $RSSFEED_LINK = $RSSFEED->channel->link; }

        if(sizeof($RSSFEED->channel->item) < $RSSFEED_LIMIT){ $RSSFEED_LIMIT = sizeof($RSSFEED->channel->item); }

    for($i = 0; $i < $RSSFEED_LIMIT; $i++){
      echo '
<p>
    <a href="'. $RSSFEED->channel->item[$i]->link .'">'. $RSSFEED->channel->item[$i]->title .'</a>';
      if($RSSFEED_EXCERPT){
          echo '
    <br />' . $RSSFEED->channel->item[$i]->description;
      }
      if($RSSFEED_DATE){
          echo '
    <br />' . date("F j h:ia", strtotime($RSSFEED->channel->item[$i]->pubDate));
      }
      echo '
</p>';
    }
    echo '
<p class="last" align=right>
    <span class="more">
        <a href="'. $RSSFEED_LINK .'">Read More &#8250;</a>
    </p>';
}

else{
  echo '
    <p>RSS Feed Unavailable.</p>';
}

?>

好的,感谢 curl_error(),我弄明白了。看起来 https 是导致问题的原因。所以我在传输设置中添加了以下内容:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

这告诉 curl 命令不验证对等方的证书。