php抓取不到html_php获取网页标题和内容函数(不包含html标签)

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("/

$store = preg_replace("//smUi",'',$store);

//remove

$store = preg_replace("/(.*)/style>/smUi",'',$store);

//remove 中文空格

$store = preg_replace("/ /",'',$store);

//remove 标点符号

//$store = preg_replace("/[/~`!@#$%^&*()_/-+={}|/[/]//;':"/>/?/,/.//]/",'',$store);

//preg_match("/

(.*)/head>/smUi",$store, $matches);

//$head = $matches[1];

//echo $head. "/n";

//charset

if($pageinfo[charset] == '' ) {

preg_match('@]*>@i',$store,$matches);

$pageinfo[charset] = trim($matches[1]);

}

//desctiption

preg_match('@]+)/*>@i',$store,$matches);

//print_r($matches);

$desc = trim($matches[1]);

$pageinfo[description] = str_replace("/"", '',$desc);

preg_match('@]+)/*>@i',$store,$matches);

//print_r($matches);

$keywords = trim($matches[1]);

$pageinfo[keywords] = str_replace("/"", '',$keywords);

preg_match("/

(.*)/title>/smUi",$store, $matches);

$pageinfo[title] = trim($matches[1]);

preg_match("/

(.*)/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标记和JavaScript标记

*/

function replaceHtmlAndJs($document)

{

$document = trim($document);

if (strlen($document) <= 0)

{

return $document;

}

$search = array (

"'

// -->'si",  // 去掉 javascript

"'<[///!]*?[^<>]*?>'si",          // 去掉 HTML 标记

"'[/r/n/s+]'",                // 去掉空白字符

"'&(/w+);'i"              // 替换 HTML 实体

);                    // 作为 PHP 代码运行

$replace = array ( "", "", "", ""  );

return @preg_replace ($search, $replace, $document);

}

使用例子

$a = getPageContent(www.ttphp.com);

print_r($a);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值