代码之家  ›  专栏  ›  技术社区  ›  fmsf

如何通过PHP将HTML页面作为字符串获取?

  •  5
  • fmsf  · 技术社区  · 15 年前

    我正在使用PHP从网页中获取一些信息 simple_php_dom 卷曲。问题是页面构建不正确,因此DOM对象包含错误的信息。

    如何在PHP var中将HTML文件作为字符串获取,以便通过它运行正则表达式?

    卷曲不起作用,因为它忽略了坏的部分。
    simple_html_dom.php 有同样的问题。
    wget 无法工作,因为我在服务器上没有对它的权限。

    3 回复  |  直到 15 年前
        1
  •  12
  •   Joey    15 年前

    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。

        2
  •  4
  •   karim79    15 年前

    对于curl,您需要确保设置了CURLOPT_RETURNTRANSFER参数,以确保将页面作为字符串检索,例如:

        //return the transfer as a string 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    

    http://www.php.net/manual/en/function.curl-setopt.php

        3
  •  0
  •   Colleen Kitchen    14 年前

    我使用cURL将文件转换成一个字符串(simple_html_dom::load_file只是包装文件的获取内容),然后使用simple_html_dom load(from string)方法来解析它。这对某些URL有效,但在这种情况下,当URL具有参数字符串时,它将失败。它像没有参数字符串一样获取URL。我用curl设置了一个代理来模拟浏览器,但是没有骰子。

    很抱歉,这不是一个真正的答案,但也许使用curl对某些fopen设置有问题的人有用。