使用curl加载外部网站的一部分?

时间:2010-08-26 02:52:39

标签: php curl

我正在为一所大学创建一个网站,我们必须将该大学的主要导航包含在页面顶部。我想要动态加载导航,而不是重新创建导航。

首先我想我可以使用iframe并将其修剪为导航。

但是,当点击链接时,它会在该框架中打开,当我想要在新窗口中显示时。

所以,我的新计划是用curl拉入导航(或者如果有人有建议,则以其他方式)。什么是最好的方式来解决这个问题?卷曲时相当新,所以我喜欢一些代码。

谢谢!

3 个答案:

答案 0 :(得分:0)

如果您想使用cURL检索它,可以在cURL的网站上使用此示例:http://curl.haxx.se/libcurl/php/examples/simpleget.html

或者,您可以使用PHP的readfile函数直接将文件(本地或外部)读入页面,或使用file_get_contents函数将其加载到变量中(然后您可以在输出之前对其进行操作)它到页面。)

答案 1 :(得分:0)

我最近在客户的现有网站上做了这个黑客攻击。

在大学网站中创建一个包含所需标题和导航的“布局视图”。除了一个标志之外,使主体变空,该标志将告诉解析器脚本在哪里插入内容。

<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;

答案 2 :(得分:0)

您可以尝试使用此库http://github.com/shuber/curl并使用正则表达式或html解析器解析卷曲响应正文中的导航