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


Posted in PHP onFebruary 03, 2014
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 标点符号   
        //$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);   
} 

使用例子

$a = getPageContent(www.ttphp.com);   
print_r($a);
PHP 相关文章推荐
php 随机排序广告的实现代码
May 09 PHP
php中存储用户ID和密码到mysql数据库的方法
Feb 06 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
php编程每天必学之验证码
Mar 03 PHP
php 数组元素快速去重
May 05 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 #PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 #PHP
分享一个超好用的php header下载函数
Jan 31 #PHP
preg_match_all使用心得分享
Jan 31 #PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 #PHP
php curl_init函数用法
Jan 31 #PHP
curl实现站外采集的方法和技巧
Jan 31 #PHP
You might like
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php生成缩略图的类代码
2008/10/02 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
javascript 常用功能总结
2012/03/18 Javascript
Express.JS使用详解
2014/07/17 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
详解vue+css3做交互特效的方法
2017/11/20 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
numpy自动生成数组详解
2017/12/15 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
python模拟事件触发机制详解
2018/01/19 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
python中最小二乘法详细讲解
2021/02/19 Python
司机的工作范围及职责
2013/11/13 职场文书
投资协议书范本
2014/04/21 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
会议主持词通用版
2019/04/02 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python