如何使用PHP包含外部网页? (有点像wordpress主题预览。)
我想要(X)符合HTML STRICT的代码 - 没有iFrame,最好没有javascript。
我的想法是,我正在为客户制作沙箱,以便在受控环境中查看网页。另一件事是,如果没有“沙盒”包装器,那么所包含的网页就不可见了。
编辑:
根据一些评论员的说法,GoDaddy已经开始了。问题的下一部分变成了 - 如何在php中删除html的页眉和页脚,以便只保留body标签的内容?我宁愿使用php字符串函数而不是正则表达式。
答案 0 :(得分:5)
尝试使用卷曲:
/**
* Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an
* array containing the HTTP server response header fields and content.
*/
function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
只需使用您的网址调用该功能,它应该将整个网页回显到php页面。
但是,您可能需要使用一些正则表达式重写资源链接,例如样式表和图像。 (将“/image.jpg”替换为“http://mydomain.com/image.jpg”)。
Curl通常安装在共享主机上。
如果你想获取页面的主体或头部,可以使用simplexml或regex表达式。 (如果html格式正确,simplexml非常适合遍历DOM。)
答案 1 :(得分:2)
PHP的file_get_contents
命令适用于各个域,因此您可以检索外部标记。但是,只是输出它有多个问题,包括相关链接不起作用,以及跨站点脚本漏洞。
虽然您说您不想使用iframe
,但该标记是有效的XHTML 1.0 Transitional,并且出于兼容性和安全性原因,我会根据您的描述进行推荐。
答案 2 :(得分:0)
你能做的就是用这个:
function __test($results){
$pattern = '/http:\/\/.+\.(jpeg|jpg|gif)/'; //regex pattern defines the image :D
preg_match_all($pattern, $results, $array); //responce of array
foreach ($array[0] as $images) //add everything as one
{
$results_image = $images;
$url = "http://saxtorinc.com/$results_image";
}
return $url;
}
请注意,您必须定义域名