0

我在学校的 PHP 作业遇到问题。我必须创建一个 PHP 脚本,该脚本可以读取包含不同 RSS 提要的一堆 URL 的 XML 文件。我正在使用 DOMDocument 从这个 XML 文件中检索一个 URL,并使用 RSS 提要加载一个新的 DOM。我将“url”节点值分配给 $url,然后使用 $url 为 RSS 提要创建一个新的 DOM 对象。

$url = $student->getElementsByTagName("url");
$url = $url->item(0)->nodeValue;


$rss = new DOMDocument();
$rss->load($url);

当我使用上面的代码时,RSS 文件不会加载。我什至回显了 $url 以确保它具有分配给它的链接。但是,如果我将实际的 url 放入 load() 中,它就可以正常工作。为什么 $url 在 load() 中不起作用?

4

1 回答 1

0

您可以simplexml_load_file在这种情况下使用,但请记住,所有这些操作都是昂贵的(时间限制、内存等)。

$rssStack = array();
$xml = simplexml_load_file("http://people.rit.edu/cns3946/539/project2/rss_class.xml");
foreach ($xml->student as $student) {
    // need sanitize $url
    $url = trim((string) $student->url);
    // suppress errors, cos some urls return "404 Not Found"
    $rss =@ simplexml_load_file($url);
    $rssStack[] = $rss;
    // also can use 
    // $rss = new DOMDocument();
    // $rss->load($url);
    // $rssStack[] = $rss;
}
print_r($rssStack);

更新

$rssStack = array();
$xml = new DOMDocument();
$xml->load("http://people.rit.edu/cns3946/539/project2/rss_class.xml");
foreach ($xml->getElementsByTagName("url") as $url) {
    // you need to sanitize url
    $url = trim($url->nodeValue);
    $rss = new DOMDocument();
    $rss->load($url);
    $rssStack[] = $rss;
    // break;
}
print_r($rssStack);
于 2013-02-02T06:42:22.513 回答