Если вы собираетесь посещать случайные страницы в Интернете с file_get_contents, и пытаются переписать контексты страницы, чтобы указать назад на вашем домене позволяет существенно создать прокси-браузер, вы должны знаете, что есть много неправильных веб-страниц. Не пытайтесь разобрать HTML с регулярным выражением, как описано здесь: RegEx match open tags except XHTML self-contained tags
Что я бы предположить, однако, было бы использовать разбор двигатель HTML, который может компенсировать шум в HTML, исправление искаженных документов, плавающий угловые скобки , и преобразовать проблемные символы в объекты, наконец, позволяя вам анализировать документ как HTML-страницу, так же, как JavaScript может ходить по узлам страницы.
PHP-библиотека, я клянусь, и успешно используется на крупных проектах, даже с содержанием SEO связанных и длинных документов без запуска в регулярных выражений пределы Memeory, является http://simplehtmldom.sourceforge.net/ После загрузки, все, что вам нужно сделать, это включить simple_html_dom.php в ваш проект. Затем, чтобы использовать библиотеку с вашим кодом, вы должны:
$dom = str_get_html($result);
Оттуда используйте DOM-методы, упомянутые в manual. Сначала выберите все элементы, которые вы хотите изменить, или все элементы *
. Затем перебирает их и проверяет, установлен ли атрибут src
. Если это так, возьмите значение src, которое является его URL-адресом, а затем замените его домен на ваш домен. Чтобы сделать это, не используйте регулярное выражение, существует много структур URL-адресов, и может быть сложно проверить значение //
, что означает использование текущей схемы или субдоменов, чтобы вы не знали, сколько точек нужно искать или пытаться для поиска косой черты, возможно, один не появится, и вы столкнетесь с ?
с указанием строки запроса или #
для хэша. Или, чтобы полностью вывести всю вашу логику из воды, вы можете столкнуться с @
, который ставит имя пользователя, за которым следует двоеточие, а затем пароль, за которым следует домен ... Там есть ДЕЙСТВИТЕЛЬНО простой способ сделать это с PHP, поскольку они имеют дизайн функции специально для замены частей URL-адресов новыми. Функция http_build_url. Однако, к сожалению, он широко не поддерживается и, вероятно, недоступен на вашем сервере. Существует альтернатива here, которая определяет ее для вас, если она не существует. Я не знаю, насколько это надежно, но я полагаю, что это зависит от parse_url, функции, которую я бы предложил в противном случае. Идея состоит в том, что вы будете анализировать URL-адрес, захватить хост-часть, которую вы хотите, а затем вручную восстановить URL. Но мне больше нравится http_build_url, потому что работа становится легким однострочным.
Чтобы проверить функцию http_build_url, вы можете попробовать:
echo http_build_url('http://google.com/search?q=yay',array('host'=>'example.com'));
После того, как вы получили эту работу, вы должны знать, как легко заменить URL. Затем вам нужно будет использовать библиотеку разбора Simple HTML DOM, с которой я связал вас, прежде чем обновлять атрибут src до вашего нового URL-адреса.
После того, как вы внесли изменения в документ DOM, вы могли бы сделать:
$result=$dom->save();
Тогда вы будете иметь обновленный документ загружен обратно в $result
строки вы работаете, и готовый доставить пользователю для вашего браузера прокси.