php - 一次从多个 url 获取 XML 数据失败

标签 php mysql xml url

我的代码是这样的

<?php
include 'dbconnection.php';
include 'date.php';

function fetch_url_content()
{
    $conn = get_dbConnection();

    $fp = fopen("abc.txt", "r") or die("Unable to open file!");
    $count = 0;
    while (!feof($fp))
    {

    $url = fgets($fp);

    //read feed into SimpleXML object
    $sxml = simplexml_load_file($url);


    foreach($sxml->channel->item as $type){
    $description = $type->description;
    $dom = new DOMDocument;
    $dom->loadHTML($description);
    $a=array();

    foreach ($dom->getElementsByTagName('td') as $node){
    array_push($a,$node->nodeValue);
    }
    $a1 = $type->title;
    $a2 = addslashes($a[3]);
    $a3 = $a[5];
    $a4 = date_correction('30-'.$a[1]); 

    $sql = "INSERT IGNORE INTO   my_table(`c1`,`c2`,`c3`,`c4`) 
    VALUES ($a1,'$a2',$a3,'$a4')";
    $sth = $conn->prepare($sql);
    $sth->execute();

    $count++;
        }
    }
    echo "successfully inserted ".$count." entries to the DB";  
}
fetch_url_content();
?>

我的 abc.txt 文件看起来像这样

http://example.com/RssNAV.aspx?swise=y&mf=43
http://example.com/RssNAV.aspx?swise=y&mf=36
http://example.com/RssNAV.aspx?swise=y&mf=4
http://example.com/RssNAV.aspx?swise=y&mf=62

在上面的代码中,我试图对第一个 url 进行处理,将数据插入数据库,然后对第二个、三分之一等执行相同的操作。

但是如果我更改 abc.txt 中 url 的顺序,我的代码只对最后一个 url 工作正常,它只对最后一个 url 工作正常,并向其他 url 提供以下错误

Warning: simplexml_load_file(): http://example.com/RssNAV.aspx?swise=y&mf=43%0D%0A:4: parser error : Extra content at the end of the document in C:\xampp\htdocs\v\xml\fetch_xml_data.php on line 21

Warning: simplexml_load_file(): <body> in C:\xampp\htdocs\v\xml\fetch_xml_data.php on line 21

应该修改什么来解决这个问题??

最佳答案

这可能是您的 abc.txt 文件中的行结尾造成的。 如果文件有 Windows 换行符,尝试用 Unix 换行符保存它。 如果那不可能,你可以用这样的东西替换你的 fgets() 解决方案:

$file = fopen("abc.txt,"r");
$text = fread($file, filesize("abc.txt"));
$lines = explode(PHP_EOL, $text);
foreach($lines as $line)
{
   // Do something
}

关于php - 一次从多个 url 获取 XML 数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38372007/

相关文章:

&lt;! 的 XML 语法规范> 类型标签

php - MySQL:计算用户可选择的年份范围的总数

java - 在从sql数据库列表中检索到的新记录中添加

php - 在 Codeigniter 中选择并加入同一个表

mysql - 在大型 MySQL 表之间传输数据

.net - 如何在 SQL 中调用标准 .NET 程序集

c# - 带有 cdata 的转义 xml 也具有转义数据值和标签

php - 如何使用 htaccess 删除 .php 扩展名

php - Docker-全功能WordPress(WP + DB + PHPMyAdmin)

php - 如何覆盖 i18n 文件中的默认文本?