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 无极分类(递归)实现代码
Jan 05 PHP
php图片缩放实现方法
Feb 20 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
php常量详细解析
Oct 27 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
laravel 数据验证规则详解
Oct 23 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
JS验证码实现代码
2017/09/14 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
Python lxml模块安装教程
2015/06/02 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
详解django2中关于时间处理策略
2019/03/06 Python
python实现微信自动回复机器人功能
2019/07/11 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
群众路线自我剖析范文
2014/11/04 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
追讨欠款律师函
2015/06/24 职场文书
2016年寒假见闻
2015/10/10 职场文书
高三化学教学反思
2016/02/22 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书