Как я могу получить HTML-страницу в виде строки через PHP? - PullRequest
5 голосов
/ 30 июля 2009

Я получаю некоторую информацию через PHP с веб-страницы, используя simple_php_dom и curl. Проблема в том, что страница построена неправильно, поэтому объект DOM содержит ошибочную информацию.

Как я могу получить файл HTML в виде строки в PHP var, чтобы через него можно было запускать регулярное выражение?

Curl не работает, поскольку игнорирует плохую часть.
simple_html_dom.php имеет ту же проблему.
wget не работает, так как у меня нет разрешений для этого на сервере.

Ответы [ 3 ]

12 голосов
/ 30 июля 2009

file_get_contents - Читает весь файл в строку

string file_get_contents ( 
    string $filename [, int $flags= 0 [, resource $context [, int $offset= -1 [, int $maxlen= -1 ]]]] 
)

из руководства:

Эта функция аналогична file (), за исключением того, что file_get_contents () возвращает файл в строке, начиная с указанного смещения до макслен байтов. В случае неудачи file_get_contents () вернет FALSE.

file_get_contents () является предпочтительным способом чтения содержимого файла в строку. Он будет использовать методы отображения памяти, если они поддерживаются вашей ОС, для повышения производительности.

И это работает как с веб-страницами, так и с файлами. Вы можете получить HTML, просто используя "http://whatever.com/page.html" в качестве $ filename.

4 голосов
/ 30 июля 2009

При использовании 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

0 голосов
/ 12 декабря 2009

Я использовал cURL, чтобы получить файл в строку (simple_html_dom :: load_file просто оборачивает file_get_contents), а затем использовал метод load (from string) load_html_dom для его анализа. Это работает для некоторых URL, но в этом случае происходит сбой, когда в URL есть строка параметра. Он выбирает URL, как если бы у него не было строки параметра. Я установил агент с curl, чтобы выдавать себя за браузер, но не игра в кости.

Извините, на самом деле это не ответ, но, возможно, использование curl подойдет для некоторых людей, для которых настройка fopen является проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...