Я получаю некоторую информацию через PHP с веб-страницы, используя simple_php_dom
и curl. Проблема в том, что страница не построена правильно, поэтому объект DOM содержит ошибочную информацию.
Как я могу получить HTML-файл в виде строки в var var, чтобы я мог выполнять регулярное выражение через него?
Curl не работает, поскольку игнорирует плохую часть.
simple_html_dom.php
есть такая же проблема.
wget
не работает, так как у меня нет разрешений для него на сервере.
file_get_contents – считывает весь файл в строку
string file_get_contents ( string $filename [, int $flags= 0 [, resource $context [, int $offset= -1 [, int $maxlen= -1 ]]]] )
из руководства:
Эта функция похожа на файл (), за исключением того, что file_get_contents () возвращает файл в строке, начиная с указанного смещения до maxlen байтов. При ошибке file_get_contents () вернет FALSE.
file_get_contents () является предпочтительным способом чтения содержимого файла в строку. Он будет использовать методы сопоставления памяти, если их поддерживает ваша ОС для повышения производительности.
И он работает как с веб-страницами, так и с файлами. Вы можете захватить HTML, просто используя « http://whatever.com/page.html » как $ filename.
С помощью curl вы хотели бы убедиться, что вы устанавливаете параметр CURLOPT_RETURNTRANSFER, чтобы убедиться, что страница получена в виде строки, например:
//return the transfer as a string curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
Я использовал cURL, чтобы получить файл в строку (simple_html_dom :: load_file только wraps file_get_contents), а затем используя метод simple_html_dom load (from string) для его анализа. Это работает для некоторых URL-адресов, но в этом случае он не работает, когда URL-адрес имеет строку параметров. Он извлекает URL-адрес так, как если бы он не имел строку параметров. Я установил агента с завитом, чтобы олицетворять браузер, но не кубики.
Извините, это не ответ на самом деле, но, возможно, использование curl будет работать для некоторых людей, для которых проблема fopen является проблемой.