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