file_get_contents():流不支持查找/;PHP对此的行为是什么时候改变的?
PHP对此的行为是什么时候改变的? 它来自哪个PHP版本file_get_contents():流不支持查找/;PHP对此的行为是什么时候改变的?,php,simple-html-dom,Php,Simple Html Dom,PHP对此的行为是什么时候改变的? 它来自哪个PHP版本 警告:文件\获取\内容():流不支持在中查找 /simple_html_dom.php 警告:文件\u get\u contents():在中的流中查找位置-1失败 /simple_html_dom.php 看 您正在使用远程文件。仅本地文件支持查找 在使用file\u get\u html之前,您可能需要将文件复制到本地文件系统。在本地主机上应该可以正常工作。当我将页面从一个系统移动到另一个系统时,我的页面上也出现了同样的问题,我可
警告:文件\获取\内容():流不支持在中查找 /simple_html_dom.php 警告:文件\u get\u contents():在中的流中查找位置-1失败 /simple_html_dom.php
看 您正在使用远程文件。仅本地文件支持查找
在使用
file\u get\u html
之前,您可能需要将文件复制到本地文件系统。在本地主机上应该可以正常工作。当我将页面从一个系统移动到另一个系统时,我的页面上也出现了同样的问题,我可以通过删除偏移量引用来更改simple\u html\u dom.php
文件(没有给我造成任何进一步的问题)
在simple\u html\u dom.php
的第75行:
$contents = file_get_contents($url, $use_include_path, $context, $offset);
我删除了对$offset
的引用:
$contents = file_get_contents($url, $use_include_path, $context);
不,我的页面很好用。不为任何其他损坏承担责任!:) 变化
function file_get_html(..., $offset = -1,...)
到
在simple_html_dom.php中设置$offset=0
这很有效 其他人分享了解决方案,但没有人分享原因。我不知道PHP7.0和7.1之间有什么不同,但是 远程文件不支持查找(偏移)。试图 非本地文件上的seek可能会使用较小的偏移量,但这是不正确的 不可预测,因为它在缓冲流上工作 我可以确认在第75行删除
文件获取内容
中的偏移量参数对我有效,和/或在第70行的文件获取html
功能中将偏移量设置为0也有效
我猜offset参数从来没有打算用于非本地文件,因为:
从原始流开始读取的偏移量。消极的
从流末尾开始的偏移量计数
希望这有助于澄清任何困惑。对于外部源,从一开始就开始流媒体是有意义的。您不需要编辑供应商文件。只需从以下位置更改您的请求:
$html = HtmlDomParser::file_get_html( "https://www.google.com/");
致:
问题在于,如果希望简单HTMLDOM使用的偏移量为“0”,则默认偏移量为“-1”。幸运的是,它接受它作为参数,这意味着您可以轻松地更改它,而无需更改简单的HTMLDOM源代码
注意:这一兼容性问题在v1.7+中得到了解决。首先,尝试更改simple\u html\u dom.php,如
- 从第75行的文件获取内容(…)中删除偏移量参数
- 或者在第70行的file_get_html func中将偏移量设置为0
之后,它在每台机器和系统上对我都有效PHP行为没有改变吗?此规范是否与过去相同?根据changelog,关于在远程文件上查找,没有任何更改。这就是为什么我假设你以前只处理本地文件,搜索是可以的(或者你很幸运,因为根据文档,有时搜索也可能在远程文件的小范围内工作)。谢谢。>根据docthis Ocurs在PHP7.1中的介绍,有时候查找可能也适用于远程文件的小范围,但在7.0和D5.6中效果很好。这个兼容性问题在1.7以后的版本中已经解决了,很简单,但很出色!天才!拯救了这一天,天才。你绝对是最受欢迎的,这是完美的,应该是公认的答案:)你是我的英雄!如果使用编写器版本,则回答正确
function file_get_html(..., $offset = 0,...)
$html = HtmlDomParser::file_get_html( "https://www.google.com/");
$html = HtmlDomParser::file_get_html( "https://www.google.com/", false, null, 0 );