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