str_get_html没有加载有效的html字符串

Dan*_*ani 10 php curl simple-html-dom

我使用curl收到一个html字符串:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html_string = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

当我echo它,我看到一个非常好的HTML,因为我需要解析我的解析需求.但是,当尝试将此字符串发送到HTML DOM PARSER方法时str_get_html($html_string),它不会上传它(从方法调用返回false).

我尝试将其保存到文件并打开file_get_html文件,但同样的事情发生.

这可能是什么原因?正如我所说,当我回应它时,html看起来非常好.

非常感谢.

代码本身:

$html = file_get_html("http://www.bgu.co.il/tremp.aspx");
$v = $html->find('input[id=__VIEWSTATE]');
$viewState = $v[0]->attr['value'];
$e = $html->find('input=[id=__EVENTVALIDATION]');
$event = $e[0]->attr['value'];

$html->clear(); 
unset($html);

$body = " A_STRING_THAT_CONTAINS_SOME_DATA " 

$ch = curl_init("http://www.bgu.co.il/tremp.aspx");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$html_string = curl_exec($ch);

$file_handle = fopen("file.txt", "w");
fwrite($file_handle, $html_string);
fclose($file_handle);

curl_close($ch);

$html = str_get_html($html_string);
Run Code Online (Sandbox Code Playgroud)

twx*_*xia 32

你的卷曲链接似乎有很多元素(大文件).

我正在解析一个与你的链接一样大的字符串(文件)并遇到这个问题.

看到源代码后,我发现了问题.这个对我有用 !


我发现simple_html_dom.php限制了你读的大小.

// get html dom from string
  function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_B     R_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
  {
           $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
           if (empty($str) || strlen($str) > MAX_FILE_SIZE)
           {
                   $dom->clear();
                   return false;
           }
           $dom->load($str, $lowercase, $stripRN);
           return $dom;
  }

你必须改变下面的默认大小(它位于simple_html_dom.php的顶部)
可能会更改为100000000?由你决定.

define('MAX_FILE_SIZE', 6000000); 

  • 你摇滚哥们!谢谢. (2认同)

flo*_*n h 1

您是否检查过 HTML 是否以 HTML DOM PARSER 不期望的方式编码?例如,使用 HTML 实体&lt;html&gt;而不是<html>\xe2\x80\x93\xe2\x80\x89 这样的 HTML 实体,它仍然会在浏览器中显示为正确的 HTML,但不会解析。

\n