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').'...'; }