php新闻模块内容的截取

通常我们网站上的新闻信息是存储在数据库中的,这样我们需要用php来获取到数据库里面的新闻信息,再加以展示,下面用我们公司的新闻模块来说说其中的应用到的方法,此新闻模块有首先是一个新闻列表,其中展示出新闻的标题(title),发表时间(time),还有截取固定长度的新闻信息一坐新闻列表展示的内容,具体该如何实现呢。首先是查询数据库啦,将需要的数据都查询出来:

$result = mysql_query('select * from our_news where news_type in(1,3,4,5,6,7,8)');

然后用while方法把查询出来的额数据循环echo出来。代码如下:

 <ul>
       <?php while ($row = mysql_fetch_array($result)) {
    ?>
    <li>
    
        <a href="news_show<? echo $row['id'];?>.html" class="news_tit"><?php echo $row['news_title']; ?></a>
        <span><?php echo $row['news_time']; ?></span>
        <p>
        <?php 
           $str=$row['news_content']; 
           $str=preg_replace('/<img (.*) \/>/i','',$str);
           $str=preg_replace('/<p[^>]*>/i','',$str);
           $str=preg_replace('/<\/p>/i','',$str);
           $str = preg_replace ( "/<a[^>]*>/i", "", $str );
           $str = preg_replace ( "/<\/a>/i", "", $str );
           $str = preg_replace ( "/<span[^>]*>/i", "", $str );
           $str = preg_replace ( "/<\/span>/i", "", $str );
           if(iconv_strlen($str,'utf-8')<120)
              {
                  echo $str;
              }else{
                  echo iconv_substr($str, 0,120,'UTF-8').'...';
              }
              
             ?></p>
         <a href="news_show<? echo $row['id'];?>.html" class="right">查看更多>></a>
         <div class="clear"></div>
        
       </li>
<?php
}
?>
</ul>

由于新闻的主体部分时用到编辑器来保存到数据库的,里面会有一些标签,如img、p、a、span,那在这边显示需要去除这些标签才行,于是用到了preg_replace 方法来去除这些标签,代码如下:

           $str=$row['news_content']; 
           $str=preg_replace('/<img (.*) \/>/i','',$str);
           $str=preg_replace('/<p[^>]*>/i','',$str);
           $str=preg_replace('/<\/p>/i','',$str);
           $str = preg_replace ( "/<a[^>]*>/i", "", $str );
           $str = preg_replace ( "/<\/a>/i", "", $str );
           $str = preg_replace ( "/<span[^>]*>/i", "", $str );
           $str = preg_replace ( "/<\/span>/i", "", $str );

接下来就是截取固定长度的新闻内容了,首先是用iconv_strlen($str,'utf-8')获取新闻的长度,如果大于120就截取120个字节的长度出来,否则直接echo这的字符串出来就好了,实现代码如下:

              if(iconv_strlen($str,'utf-8')<120)
              {
                  echo $str;
              }else{
                  echo iconv_substr($str, 0,120,'UTF-8').'...';
              }