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学习 运算符与运算符优先级
Jun 15 PHP
php 数组的创建、调用和更新实现代码
Mar 09 PHP
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
async和DOM Script文件加载比较
Jul 20 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
laravel 5 实现模板主题功能
Mar 02 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
php中yii框架实例用法
Dec 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生成自定义长度随机字符串的函数分享
2014/05/04 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jquery处理json对象
2014/11/03 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
Python socket实现简单聊天室
2018/04/01 Python
深入浅析Python传值与传址
2018/07/10 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
python3调用windows dos命令的例子
2019/08/14 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
美国校园市场:OCM
2017/06/08 全球购物
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
家属慰问信
2015/02/14 职场文书
青涩记忆观后感
2015/06/18 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP