You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用PHP解析多个RSS源仅能获取最后一条源数据的问题求助

问题原因

  1. URL 存在不可见残留字符:你用explode("\n")拆分源文件内容时,如果core/sources文件的换行符是 Windows 格式的\r\n,拆分后每个 URL 末尾会残留\r回车符,导致请求无效 RSS 地址,simplexml_load_file加载失败返回空。你调换源顺序后,排在前面的源都会因为这个问题加载失败,只有最后一行的 URL 不会残留额外换行符,所以能正常读取。
  2. 缺少错误校验逻辑:代码没有判断 simplexml_load_file的返回结果,加载失败时直接访问$feeds->channel->title会得到空值,也不会有明显的错误提示。

不需要手动结束 simplexml 的文件读取操作,这个问题和资源释放无关。

修复方案

遍历每个 URL 时先调用trim()清除首尾所有空白字符(包括回车、换行、空格等),同时增加加载结果的校验逻辑,修改后的参考代码如下:

if (file_exists("core/sources")) {
    $URLItems = array_filter(explode("\n", file_get_contents('core/sources')));
    $totalPosts = array();

    foreach ($URLItems as $rawUrl) {
        // 清除URL首尾的空白、换行、回车等不可见字符
        $url = trim($rawUrl);
        // 校验URL格式合法再请求
        if (!filter_var($url, FILTER_VALIDATE_URL)) {
            continue;
        }
        $feeds = simplexml_load_file($url);
        // 校验XML加载成功、且存在channel->title字段
        if ($feeds && isset($feeds->channel->title)) {
            $sourceName = (string)$feeds->channel->title;
            array_push($totalPosts, $sourceName);
        }
    }
    print_r($totalPosts);
}

内容的提问来源于stack exchange,提问作者Adam Rajnoha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:18:00