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和ACCESS写聊天室(四)
Oct 09 PHP
php查看session内容的函数
Aug 27 PHP
php中计算时间差的几种方法
Dec 31 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
php实现统计IP数及在线人数的示例代码
Jul 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
PHP新手上路(八)
2006/10/09 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
软件工程专业推荐信
2013/10/28 职场文书
北大研究生linux应用求职信
2013/10/29 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
推广普通话演讲稿
2014/05/23 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
信用卡收入证明范本
2015/06/12 职场文书
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB
排查Tomcat进程假死的问题
2022/05/06 Servers