загрузить часть внешнего сайта с помощью curl? - PullRequest
0 голосов
/ 26 августа 2010

Я создаю сайт для университета, где мы должны включить основную навигацию университета в верхней части страницы.Вместо того, чтобы заново создавать их навигацию, я хочу загрузить их динамически.

Сначала я подумал, что мог бы использовать iframe и просто обрезать его по навигации.

Однако, когда щелкают ссылкуон открывается в этом кадре, когда я хочу его в новом окне.

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

Спасибо!

Ответы [ 3 ]

0 голосов
/ 26 августа 2010

Я недавно сделал этот хак на существующем сайте клиента.

Создайте «вид макета» на сайте университета, который содержит заголовок и навигацию, которые вы хотите. Сделайте тело пустым, за исключением флага, который сообщит вашему скрипту синтаксического анализатора, куда вставлять содержимое.

<div class="nav">
    <!-- ... -->
</div>
<div class="body">
    <!-- Below is the flag -->
    {content} 
</div>

Используйте следующий код для импорта макета HTML, вставьте в него страницу HTML, а затем выведите ее

// Variables
$contentForLayout = '<p>This is the page content</p>'
$pageTitle = 'Test Page';
$layoutUrl = 'http://'.$_SERVER['HTTP_HOST'].'/unilayout'; // AFAIK, cURL like the host to be there

// Get layout HTML
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $layoutUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
ob_start();
curl_exec($ch);
curl_close($ch);
$layoutHtml = ob_get_contents();
ob_end_clean();

// Insert your page HTML into the layout HTML
$layoutHtml = str_replace('{content}', $contentForLayout, $layoutHtml);

// Insert your page title into the layout HTML
$layoutHtml = preg_replace('%<title>[^<]*</title>%si', '<title>'.h($pageTitle).'</title>', $layoutHtml);

// Output
print $layoutHtml;
0 голосов
/ 26 августа 2010

Вы можете попробовать использовать эту библиотеку http://github.com/shuber/curl и проанализировать навигацию из тела ответа curl, используя regex или html-анализатор

0 голосов
/ 26 августа 2010

Если вы хотите получить его с помощью cURL, вы можете использовать этот пример с веб-сайта cURL: http://curl.haxx.se/libcurl/php/examples/simpleget.html.

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

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