PHP中使用CURL获取页面title例子
通过PHP获取页面title内容的实战演示:
范例代码:
<?php
/*
功能:取得URL页面上的<title>内容
参数:$_POST['url']
*/
//设置最长执行的秒数
ini_set("expect.timeout",30);
set_time_limit(30);
//检查URL
if(!isset($_POST['url'])||$_POST['url']==''){
echo"URL错误";
exit;
}
/*取得URL页面数据*/
//初始化CURL
$ch=curl_init();
//设置URL
curl_setopt($ch,CURLOPT_URL,$_POST['url']);
//让curl_exec()获取的信息以数据流的形式返回,而不是直接输出。
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//在发起连接前等待的时间,如果设置为0,则不等待
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,0);
//设置CURL最长执行的秒数
curl_setopt($ch,CURLOPT_TIMEOUT,30);
//尝试取得文件内容
$store=curl_exec($ch);
//检查文件是否正确取得
if(curl_errno($ch)){
echo"无法取得URL数据";
//echocurl_error($ch);/*显示错误信息*/
exit;
}
//关闭CURL
curl_close($ch);
//解析HTML的<head>区段
preg_match("/<head.*>(.*)<\/head>/smUi",$store,$htmlHeaders);
if(!count($htmlHeaders)){
echo"无法解析数据中的<head>区段";
exit;
}
//取得<head>中meta设置的编码格式
if(preg_match("/<meta[^>]*http-equiv[^>]*charset=(.*)(\"|')/Ui",$htmlHeaders[1],$results)){
$charset= $results[1];
}else{
$charset="None";
}
//取得<title>中的文字
if(preg_match("/<title>(.*)<\/title>/Ui",$htmlHeaders[1],$htmlTitles)){
if(!count($htmlTitles)){
echo"无法解析<title>的内容";
exit;
}
//将 <title>的文字编码格式转成UTF-8
if($charset=="None"){
$title=$htmlTitles[1];
}else{
$title=iconv($charset,"UTF-8",$htmlTitles[1]);
}
echo$title;
}