php获取网页标题和内容函数(不包含html标签)

所属分类: 网络编程 / PHP编程 阅读数: 1121
收藏 0 赞 0 分享
复制代码 代码如下:

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实现的美国50个州选择列表实例

这篇文章主要介绍了php实现的美国50个州选择列表实例,可实现让当前州为选中状态的功能,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP使用递归生成文章树

写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.大概步骤如下:首先到数据库取数据,放到一个数组,然后把数据转化为一个树型状的数组,最后把这个树型状的数组转为html代码。下面我们来看个实例
收藏 0 赞 0 分享

wordpress安装过程中遇到中文乱码的处理方法

这篇文章主要介绍了wordpress安装过程中遇到中文乱码的处理方法,是个人项目中遇到的一个奇葩事件,经过一番研究,终于解决,这里记录下来分享给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

php的crc32函数使用时需要注意的问题(不然就是坑)

这篇文章主要介绍了php的crc32函数使用时需要注意的问题(不然就是坑) ,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP中把对象转换为关联数组代码分享

这篇文章主要介绍了PHP中把对象转换为关联数组代码分享,本文直接给出实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

php检测url是否存在的方法

这篇文章主要介绍了php检测url是否存在的方法,涉及php中get_headers及正则匹配的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

php获取twitter最新消息的方法

这篇文章主要介绍了php获取twitter最新消息的方法,涉及php操作curl及正则替换的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

php遍历CSV类实例

这篇文章主要介绍了php遍历CSV类,实例分析了php针对csv文件的打开、读取及遍历的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP使用mysqldump命令导出数据库

最近用php写一个数据备份的功能。做法是使用php的system函数执行mysqldump命令,进行备份,这里分享给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

PHP用反撇号执行外部命令

shell_exec() 命令行实际上仅是反撇号 ` 操作符的变体,如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部捕捉其他命令的输出。
收藏 0 赞 0 分享
查看更多