我使用simple_php_dom
和curl从网页上通过PHP获取一些信息。问题是页面没有正确构建,因此DOM对象包含错误的信息。
如何将HTML文件作为PHP var中的字符串获取,以便我可以通过它运行正则表达式?
卷曲不起作用,因为它忽略了坏部分
simple_html_dom.php
也有同样的问题
wget
不起作用,因为我在服务器上没有权限。
答案 0 :(得分:12)
file_get_contents - 将整个文件读入字符串
string file_get_contents (
string $filename [, int $flags= 0 [, resource $context [, int $offset= -1 [, int $maxlen= -1 ]]]]
)
来自手册:
此函数类似于file(),但file_get_contents()以字符串形式返回文件,从指定的偏移量开始直到maxlen字节。失败时,file_get_contents()将返回FALSE。
file_get_contents()是将文件内容读入字符串的首选方法。如果操作系统支持,它将使用内存映射技术来提高性能。
它适用于网页和文件。您可以使用“http://whatever.com/page.html”作为$ filename。
来获取HTML答案 1 :(得分:4)
使用curl,您需要确保设置CURLOPT_RETURNTRANSFER参数以确保以字符串形式检索页面,例如:
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
答案 2 :(得分:0)
我使用cURL将文件转换为字符串(simple_html_dom :: load_file只包含file_get_contents),然后使用simple_html_dom load(from string)方法解析它。这适用于某些URL,但在这种情况下,当URL具有参数字符串时,它会失败。它正在获取URL,就好像它没有参数字符串一样。我设置了一个curl代理来冒充浏览器,但没有骰子。
对不起,这不是一个真正的答案,但也许使用curl将适用于fopen设置有问题的一些人。