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函数的常用方法及注意之处小结
Jul 10 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 PHP
php把数组值转换成键的方法
Jul 13 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
PHP7新增函数
Mar 09 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面向对象 字段的声明与使用
2012/06/14 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
php中explode函数用法分析
2014/11/15 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
详解python中@的用法
2019/03/27 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
Python 项目转化为so文件实例
2019/12/23 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
Java语言的优势
2015/01/10 面试题
人力资源管理毕业生自荐信
2013/11/21 职场文书
房屋改造计划书
2014/01/10 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
老公保证书范文
2014/04/29 职场文书
作文批改评语
2014/12/25 职场文书
孔庙导游词
2015/02/04 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书