Исправить ссылки на скручиваемой странице - PullRequest
1 голос
/ 17 мая 2011

Так что, задавая вопрос за вопросом, люди не понимают, о чем я спрашиваю ..

<?php

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://www.mybroadband.co.za/news/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curl_response = curl_exec($ch);
curl_close($ch);

//Echo page back
echo $curl_response;

?>

Пожалуйста, запустите этот скрипт. В адресной строке вы увидите .. wwww.localhost / thisscriptname.php Теперь нажмите на ссылку. Посмотрите на свою адресную строку. Он перенаправляет на www.mybroadbank.co.za/xyz

Я не хочу, чтобы он там перенаправлял. Я хочу получить содержимое ссылки через curl и отобразить его по адресу www.localhost / thisscriptnameoranyname.php

Пожалуйста, помогите. Спасибо

Ответы [ 3 ]

1 голос
/ 17 мая 2011

Это потому, что Ответ cURL приносит весь HTML-код с этого URL и применяется к вашей текущей странице.Таким образом, все ссылки, возвращаемые на вашу страницу, связаны с целевым URL (который равен http://www.mybroadband.co.za/).. В результате получается что-то подобное в ответе:

<a href="http://www.mybroadband.co.za/xyz">XYZ</a>
<a href="http://www.mybroadband.co.za/abc">ABC</a>

. Таким образом, при нажатии на этиссылки, он направит вас на http://www.mybroadband.co.za/something. Вам нужно не перенаправлять на эти страницы, а вместо этого отображать содержимое на странице вашего локального хоста? Предполагая, что я прав.

Итак, по порядкуЧтобы решить эту проблему, вам нужно отредактировать Ответ cURL, в котором вы преобразуете эти HTML-теги привязки (ссылки) выше в:

<a onClick="getPage('http://www.mybroadband.co.za/xyz')">XYZ</a>
<a onClick="getPage('http://www.mybroadband.co.za/abc')">ABC</a>

Затем просто закодируйте функцию getPage($link) вJavascript, использующий AJAX для запроса страницы с $ link и возврата, как и вы.

0 голосов
/ 17 мая 2011

Удалите тег <base> из заголовка найденного текста.Это приводит к тому, что все ссылки основаны на исходном сайте, а не на вашей прокси-версии:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
    <head>
    <base href="http://mybroadband.co.za/news/" />
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--- remove this line

Хотя, если вы просто слепо просматриваете текст, ничего не делая, вам, вероятно, следует просто вставить этоiframe и сохранить пропускную способность на вашем сервере.

0 голосов
/ 17 мая 2011

Чтобы объяснить, что происходит: Это именно то, что вы хотите. Но браузер интерпретирует HTML, так что вы видите страницу. Если вы хотите увидеть реальный HTML-код, используйте echo htmlspecialchars($curl_response);. Размещение его в текстовой области может не дать правильных результатов.

Если вы хотите заменить все ссылки в HTML-коде так, чтобы они оставались на вашей странице, тогда это совершенно другая игра в мяч. Вам нужно будет проанализировать HTML-код и заменить его, используя такие вещи, как preg_replace и str_replace.

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