简单HTML DOM和通过嵌套循环提取数据的奇怪问题


Weird issue with Simple HTML DOM and extracting the data through a nested loop

如果这是一个新手问题,我很抱歉,但我不明白为什么这不起作用-而且我在搜索时似乎找不到任何关于它的东西。

基本上,我正试图从我们的网站刮一些用户的详细信息,这是不可用的网站的REST api,所以我必须手工做。我已经编译了一个带有用户id的文本文件,我使用它通过简单的HTML Dom从每个用户获取所需的详细信息。

<?php
include('simple_html_dom.php') ;
include('functions.php') ;
$file = fopen("userids2.txt", "r") ;
while(!feof($file)) {
    $userid = fgetss($file) ;
    $url = 'http://<our URL>/user/'.$userid ;
    echo $url ; 
    webscraper($url) ;
}
fclose($file) ;
?>

和下面是functions.php的内容:

   <?php
function webscraper($loopurl) {
    $html = new simple_html_dom();
    $html->load_file($loopurl);
    $test = $html->getElementsById('ctl00_ContentPlaceHolderDefault_UserViewUC_tabContainer_tabProfile_userProfile_ddWork') ;
    foreach ($test as $element) {
        echo $element ;
    }
}
?>

使用的特定文本文件包含4个userid,我知道它们包含我想要的信息。当我运行脚本时,它只会从文本文件的最后一行给我url的输出。它可以很好地打印出url,但拒绝为前三个条目加载远程html。如果我删除文本文件的最后一行,它就会加载新的最后一行(之前它拒绝这样做)。

有什么想法?

我找到了问题所在。文本文件中除了最后一个条目外,所有条目都有一个"不可见"的行结束字符。这就是为什么它不能工作。在检索行时添加修剪修复了这个问题:

 $userid = trim(fgetss($file)); 

我可能应该知道这一点,但至少我下次不会再犯这个错误了:-)。