无法在流中寻找-1的位置

时间:2017-03-26 20:35:32

标签: php parsing dom

我正在使用SimpleHTMLDOM解析器从其他站点获取数据。这在PHP 7.0上运行得很好。自从我升级到PHP 7.1.3后,我从file_get_contents获得以下错误代码:

  

警告:file_get_contents():stream不支持搜索   /..../test/scripts/simple_html_dom.php在线   75警告:file_get_contents():无法在-1中寻找位置-1   流入   /..../test/scripts/simple_html_dom.php在线   75

我做了什么

我降级到PHP 7,它像以前一样没有任何问题。接下来,我查看了解析器的代码。但我没有发现任何不寻常的事情:

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
    // We DO force the tags to be terminated.
    $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
    // For sourceforge users: uncomment the next line and comment the retreive_url_contents line 2 lines down if it is not already done.
    $contents = file_get_contents($url, $use_include_path, $context, $offset);
    // Paperg - use our own mechanism for getting the contents as we want to control the timeout.
    //$contents = retrieve_url_contents($url);
    if (empty($contents) || strlen($contents) > MAX_FILE_SIZE)
    {
        return false;
    }
    // The second parameter can force the selectors to all be lowercase.
    $dom->load($contents, $lowercase, $stripRN);
    return $dom;
}

我使用的解析器可以在这里找到:http://simplehtmldom.sourceforge.net/

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

PHP函数7.1中的PHP函数'file_get_contents'已更改(已添加对负偏移的支持),因此默认值在Simple HTML5 Dom Parser中使用的$ offset的“ -1”值对PHP> = 7.1无效。您必须将其设置为零。

我注意到几天前该错误已得到纠正,因此该问题不应出现在最新版本(https://sourceforge.net/p/simplehtmldom/repository/ci/3ab5ee865e460c56859f5a80d74727335f4516de/

中。