PHP的行为何时发生变化?
从哪个PHP版本开始?
警告:file_get_contents():stream不支持搜索 /simple_html_dom.php
警告:file_get_contents():无法在流中寻找-1的位置 /simple_html_dom.php
company_list= [a for a in entity_list if any(company_types) in a]
TypeError: 'in <string>' requires string as left operand, not bool
答案 0 :(得分:92)
当我将它从一个系统移动到另一个系统时,我在页面上遇到了同样的问题,我可以通过删除偏移参考来更改simple_html_dom.php
文件(没有给我带来任何进一步的问题)。
simple_html_dom.php
的第75行:
$contents = file_get_contents($url, $use_include_path, $context, $offset);
我删除了对$offset
的引用:
$contents = file_get_contents($url, $use_include_path, $context);
没有我的页面工作正常。不对其他任何事情承担责任! :)
答案 1 :(得分:17)
更改
function file_get_html(..., $offset = -1,...)
到
function file_get_html(..., $offset = 0,...)
<_>在simple_html_dom.php中
答案 2 :(得分:12)
您不需要编辑供应商文件。只需更改您的请求即可:
$html = HtmlDomParser::file_get_html( "https://www.google.com/");
收件人:
$html = HtmlDomParser::file_get_html( "https://www.google.com/", false, null, 0 );
问题在于,当您希望简单HTML DOM的默认偏移量为“ 0”时,默认偏移量为“ -1”。幸运的是,它接受它作为参数,这意味着您可以轻松更改它而无需更改Simple HTML DOM源。
注意:此兼容性问题已在v1.7 +中修复
答案 3 :(得分:4)
在simple_html_dom.php
文件中,搜索$offset
并将其删除 - 它应位于第75行和第76行。一切都会正常工作。
答案 4 :(得分:2)
其他人已经分享了解决方案,但没有人分享原因。我不清楚具体为什么这在PHP 7.0和PHP之间有所不同。 7.1,但PHP.net docs for this function说:
远程文件不支持寻找(偏移)。试图 寻找非本地文件可能适用于小偏移,但这是 不可预测,因为它适用于缓冲流。
我可以确认删除第75行file_get_contents
中的偏移参数对我有用和/或在第70行的file_get_html
函数中将偏移设置为0也适用。
我猜偏移参数从未打算用于非本地文件,因为:
原始流上开始读取的偏移量。负 偏移量从流的末尾开始计算。
希望这有助于消除任何困惑。使用外部源,从一开始就开始流式传输是有意义的。
答案 5 :(得分:1)
请参阅file_get_contents(): stream does not support seeking PHP
您正在使用远程文件。寻求仅支持本地文件。
在使用file_get_html
之前,您可能需要将文件复制到本地文件系统。它应该在localhost上正常工作。
答案 6 :(得分:0)
首先,尝试更改simple_html_dom.php之类的
从第75行的file_get_contents(...)中删除offset参数
或在第70行的file_get_html函数中将偏移量设置为0
如果仍然无法运行 ???像我的
这意味着您拥有最新版本的PHP,您需要从https://sourceforge.net/projects/simplehtmldom/下载最新版本的simple_html_dom.php
在那之后,它对我来说适用于每台机器和系统
答案 7 :(得分:-1)
设置$ offset = 0
这很有效!