设为首页 收藏本站
查看: 2668|回复: 0

[经验分享] php获取网页标题和内容函数(不包含html标签)

[复制链接]

尚未签到

发表于 2017-4-14 06:59:13 | 显示全部楼层 |阅读模式
  function getPageContent($url) {    //$url='http://www.phplover.cn';    $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 标点符号    //$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标记和JavaScript标记   */   function replaceHtmlAndJs($document)    {    $document = trim($document);    if (strlen($document) <= 0)    {    return $document;    }    $search = array (          "'<script[^>]*?>.*?// --></mce:script>'si",  // 去掉 javascript    "'<[///!]*?[^<>]*?>'si",          // 去掉 HTML 标记    "'[/r/n/s+]'",                // 去掉空白字符    "'&(/w+);'i"              // 替换 HTML 实体    );                    // 作为 PHP 代码运行    $replace = array ( "", "", "", ""  );    return @preg_replace ($search, $replace, $document);    }   
function getPageContent($url) {

//$url='http://www.phplover.cn';

$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("/<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 标点符号
//$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标记和JavaScript标记
*/
function replaceHtmlAndJs($document)
{
$document = trim($document);
if (strlen($document) <= 0)
{
return $document;
}
$search = array (
"'<script[^>]*?>.*?</script>'si", // 去掉 javascript
"'<[///!]*?[^<>]*?>'si", // 去掉 HTML 标记
"'[/r/n/s+]'", // 去掉空白字符
"'&(/w+);'i" // 替换 HTML 实体
); // 作为 PHP 代码运行

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

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

}
本文来源于php爱好者 http://www.phplover.cn/ , 原文地址:http://www.phplover.cn/post/phphuoquwangyebiaotiheneirongdehanshu.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-364630-1-1.html 上篇帖子: 想学PHP来兄弟连是正确的选择 初识兄弟连三周 下篇帖子: java/php/c#版rsa签名以及java验签实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表