Ответьте на любую веб-страницу в интернете из файла PHP - PullRequest
0 голосов
/ 02 ноября 2009

Как я могу создать простой файл PHP, который будет извлекать HTML и заголовки любой веб-страницы в Интернете, изменять URL-адрес изображений / ресурсов на их полный URL-адрес (например: image.gif на http://www.google.com/image.gif), а потом ответь?

Ответы [ 3 ]

1 голос
/ 02 ноября 2009

Хорошо, прежде всего, чтобы получить заголовки, используйте функцию PHP get_headers .

<?php

$url = "http://www.example.com/";
$headers = get_headers($url, true);

?>

Затем прочитайте содержимое страницы в переменную.

<?php

$handle = fopen($url, r);
$content = '';
while(! feof($handle)) {
    $text .= fread($handle, 8192);
}
fclose($handle);

?>

Затем вам нужно пройти по контенту в поисках ресурсов и предварительно ожидая URL, чтобы получить абсолютный путь к ресурсу, если он уже не является абсолютным. Следующий пример регулярного выражения будет работать с атрибутами src (например, изображения и javascript) и должен дать вам отправную точку для просмотра других ресурсов, таких как CSS, который использует href = "". Это регулярное выражение не будет совпадать, если a: в источнике является хорошим индикатором того, что он содержит http: // и, следовательно, является абсолютным путем. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, это ни в коем случае не идеально и не учитывает все виды странных и замечательных мест размещения ресурсов, но это хорошее начало.

<?php

$pattern = '@src="([0-9A-Za-z-_/\.])+"@';
preg_match_all($pattern, $text, $matches);

foreach($matches[0] as $match) {
    $src = str_replace('src="', '', $match);
    $text = str_replace($match, 'src="' . $url . $src, $text);
}

print($text);

?>
0 голосов
/ 02 ноября 2009

Я думаю, что вы ищете сценарий PHP Proxy. В Интернете их несколько - это один , который я создал (хотя на данный момент у меня нет времени исправлять ошибки).

Я бы порекомендовал использовать тот, который уже создан поверх того, который вы написали сами, поскольку это не тривиальная вещь (есть и лучшие сценарии, чем у меня).

0 голосов
/ 02 ноября 2009
<?
$file = "http://www.somesite/somepage";
$handle = fopen($file, "rb");
$text = '';
while (!feof($handle)) {
  $text .= fread($handle, 8192);
}
fclose($handle);
print($text);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...