php獲取網(wǎng)頁(yè)標(biāo)題和內(nèi)容函數(shù)(不包含html標(biāo)簽)
更新時(shí)間:2014年02月03日 13:50:51 作者:
有時(shí)候我們需要獲取網(wǎng)頁(yè)的標(biāo)題與內(nèi)容,就是個(gè)采集函數(shù),這里簡(jiǎn)單分享下,方便需要的朋友
復(fù)制代碼 代碼如下:
function getPageContent($url) {
//$url='http://www.ttphp.com;
$pageinfo = array();
$pageinfo[content_type] = '';
$pageinfo[charset] = '';
$pageinfo[title] = '';
$pageinfo[description] = '';
$pageinfo[keywords] = '';
$pageinfo[body] = '';
$pageinfo['httpcode'] = 200;
$pageinfo['all'] = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 8);
curl_setopt($ch, CURLOPT_FILETIME, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_URL,$url);
$curl_start = microtime(true);
$store = curl_exec ($ch);
$curl_time = microtime(true) - $curl_start;
if( curl_error($ch) ) {
$pageinfo['httpcode'] = 505; //gate way error
echo 'Curl error: ' . curl_error($ch) ."/n";
return $pageinfo;
}
//print_r(curl_getinfo($ch));
$pageinfo['httpcode'] = curl_getinfo($ch,CURLINFO_HTTP_CODE);
//echo curl_getinfo($ch,CURLINFO_CONTENT_TYPE)."/n";
$pageinfo[content_type] = curl_getinfo($ch,CURLINFO_CONTENT_TYPE);
if(intval($pageinfo['httpcode']) <> 200 or !preg_match('@text/html@',curl_getinfo($ch,CURLINFO_CONTENT_TYPE) ) ) {
//print_r(curl_getinfo($ch) );
//exit;
return $pageinfo;
}
preg_match('/charset=([^/s/n/r]+)/i',curl_getinfo($ch,CURLINFO_CONTENT_TYPE),$matches); //從header 里取charset
if( trim($matches[1]) ) {
$pageinfo[charset] = trim($matches[1]);
}
//echo $pageinfo[charset];
//exit;
curl_close ($ch);
//echo $store;
//remove javascript
$store = preg_replace("/<mce:script.*><!--
(.*)<//script>/smUi",'',$store);
//remove link
$store = preg_replace("/<link/s+[^>]+>/smUi",'',$store);
//remove <!-- -->
$store = preg_replace("/<!--.*-->/smUi",'',$store);
//remove <style </<style>
$store = preg_replace("/<style.*>(.*)<//style>/smUi",'',$store);
//remove 中文空格
$store = preg_replace("/ /",'',$store);
//remove 標(biāo)點(diǎn)符號(hào)
//$store = preg_replace("/[/~`!@#$%^&*()_/-+={}|/[/]//;':"/</>/?/,/.//]/",'',$store);
//preg_match("/<head.*>(.*)<//head>/smUi",$store, $matches);
//$head = $matches[1];
//echo $head. "/n";
//charset
if($pageinfo[charset] == '' ) {
preg_match('@<meta.+charset=([/w/-]+)[^>]*>@i',$store,$matches);
$pageinfo[charset] = trim($matches[1]);
}
//desctiption
preg_match('@<meta/s+name=/"*description/"*/s+content/s*=/s*([^/>]+)/*>@i',$store,$matches);
//print_r($matches);
$desc = trim($matches[1]);
$pageinfo[description] = str_replace("/"", '',$desc);
preg_match('@<meta/s+name=/"*keywords/"*/s+content/s*=/s*([^/>]+)/*>@i',$store,$matches);
//print_r($matches);
$keywords = trim($matches[1]);
$pageinfo[keywords] = str_replace("/"", '',$keywords);
preg_match("/<title>(.*)<//title>/smUi",$store, $matches);
$pageinfo[title] = trim($matches[1]);
preg_match("/<body.*>(.*)<//body>/smUi",$store, $matches);
$pageinfo[body] = addslashes( replaceHtmlAndJs($matches[1]) ) ;
$pageinfo['all'] = addslashes( replaceHtmlAndJs($store) ) ;
//echo "charset = " . $pageinfo[charset] . "/n";
//print_r($pageinfo);
//exit;
return $pageinfo;
}
/**
* 去掉所有的HTML標(biāo)記和JavaScript標(biāo)記
*/
function replaceHtmlAndJs($document)
{
$document = trim($document);
if (strlen($document) <= 0)
{
return $document;
}
$search = array (
"'<script[^>]*?>.*?
// --></mce:script>'si", // 去掉 javascript
"'<[///!]*?[^<>]*?>'si", // 去掉 HTML 標(biāo)記
"'[/r/n/s+]'", // 去掉空白字符
"'&(/w+);'i" // 替換 HTML 實(shí)體
); // 作為 PHP 代碼運(yùn)行
$replace = array ( "", "", "", "" );
return @preg_replace ($search, $replace, $document);
}
使用例子
復(fù)制代碼 代碼如下:
$a = getPageContent(www.ttphp.com);
print_r($a);
您可能感興趣的文章:
- PHP刪除HTMl標(biāo)簽的三種解決方法
- php過(guò)濾HTML標(biāo)簽、屬性等正則表達(dá)式匯總
- php去除HTML標(biāo)簽實(shí)例
- PHP html標(biāo)簽正則替換并可自定義正則規(guī)則
- php 批量替換html標(biāo)簽的實(shí)例代碼
- PHP實(shí)現(xiàn)HTML標(biāo)簽自動(dòng)補(bǔ)全代碼
- php使HTML標(biāo)簽自動(dòng)補(bǔ)全閉合函數(shù)代碼
- PHP中HTML標(biāo)簽過(guò)濾技巧
- PHP 修復(fù)未正常關(guān)閉的HTML標(biāo)簽實(shí)現(xiàn)代碼(支持嵌套和就近閉合)
- php實(shí)現(xiàn)過(guò)濾表單提交中html標(biāo)簽的方法
- PHP轉(zhuǎn)換文本框內(nèi)容為HTML格式的方法
- PHP將HTML轉(zhuǎn)換成文本的實(shí)現(xiàn)代碼
- php中將html中的br換行符轉(zhuǎn)換為文本輸入中的換行符
- php自定義函數(shù)轉(zhuǎn)換html標(biāo)簽示例
相關(guān)文章
PHP用SAX解析XML的實(shí)現(xiàn)代碼與問(wèn)題分析
近日在做一個(gè)解析XML的小程序,因?yàn)榉?wù)器是PHP4的,XML解析函數(shù)只能用SAX方式的xml_parser來(lái)解析了。2011-08-08php實(shí)現(xiàn)與erlang的二進(jìn)制通訊實(shí)例解析
這篇文章主要介紹了php實(shí)現(xiàn)與erlang的二進(jìn)制通訊實(shí)例解析,需要的朋友可以參考下2014-07-07淺析php靜態(tài)方法與非靜態(tài)方法的用法區(qū)別
下面小編就為大家?guī)?lái)一篇淺析php靜態(tài)方法與非靜態(tài)方法的用法區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05PHP實(shí)現(xiàn)動(dòng)態(tài)獲取函數(shù)參數(shù)的方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)動(dòng)態(tài)獲取函數(shù)參數(shù)的方法,結(jié)合實(shí)例形式分析了php針對(duì)函數(shù)參數(shù)操作func_num_args()、func_get_arg()及func_get_args()函數(shù)相關(guān)使用技巧,需要的朋友可以參考下2018-04-04Erlang的運(yùn)算符(比較運(yùn)算符,數(shù)值運(yùn)算符,移位運(yùn)算符,邏輯運(yùn)算符)
如果要比較兩個(gè)數(shù),如果兩個(gè)數(shù)之間是不同的類(lèi)型,比如float和int那么,==操作會(huì)首先把兩個(gè)數(shù)字轉(zhuǎn)換成相同的相同類(lèi)型2012-07-07