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 相关文章推荐
搜索和替换文件或目录的一个好类--很实用
Oct 09 PHP
PHP代码优化的53个细节
Mar 03 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
php基于str_pad实现卡号不足位数自动补0的方法
Nov 12 PHP
Thinkphp无限级分类代码
Nov 11 PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 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实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
javascript动态加载二
2012/08/22 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python操作mysql代码总结
2018/06/01 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
python微信公众号开发简单流程实现
2020/03/09 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
销售冠军获奖感言
2014/02/03 职场文书
拓展策划方案
2014/06/03 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
Python max函数中key的用法及原理解析
2021/06/26 Python
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL