CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

[求]字符串截取函数,要求见贴

楼主Minisheep(风云人物)2004-07-04 19:57:23 在 Web 开发 / PHP 提问

我从数据库中读出一段文章存到$str,由于太长所以截取一段做预览。但这文章中有HTML。即里面有<table>、<font>、<marquee>等标签,若直接用substr截取肯定会破坏版面。所以请高手写一个函数来截取。不一定很完美,只要能尽量不破坏版面就行。 问题点数:100、回复次数:8Top

1 楼mistjin(今天天气不错)回复于 2004-07-04 20:06:23 得分 0

看看正则表达式,自己摸索写一下先Top

2 楼surfchen(冲浪)回复于 2004-07-04 20:31:09 得分 0

htmlspecialchars   (   string   string   [,   int   quote_style   [,   string   charset]])  
  please   try   this   functionTop

3 楼juxugongzi(拘虚公子)回复于 2004-07-04 21:07:55 得分 0

我想可以使用这个思路:  
  不要去处理HTML标签,一一去读字符串中的字符,即读到一个   <   就入栈(计数加一),读到一个   >   就出栈(计数减一),这样,如果栈为空(计数为0),则表示当前的字符不是HTML标签的组成部分。这样,只收集非HTML标签字符即可。Top

4 楼Minisheep(风云人物)回复于 2004-07-04 21:11:18 得分 0

我也有过这种想法,先截取一段,比如400个字符  
  然后计算里面<table>、</table>标签的个数,最后再补上不够的  
  但这样速度不是很好,可能我的算法不行,谁能写一个吗?Top

5 楼juxugongzi(拘虚公子)回复于 2004-07-04 21:13:43 得分 50

我草草写了一个,你看看:  
  <?php  
  function   htmlsubstr($str,   $start,   $length)   {  
  $stack   =   0;  
  $newstr   =   '';  
  for   ($i   =   0;   $i   <   strlen($str);   $i++)   {  
  $chr   =   $str{$i};  
  if   ($chr   ==   '<')   $stack++;  
  if   ($chr   ==   '>')   $stack--;  
  if   ($stack   ==   0)   $newstr   .=   $chr;  
  }  
  return   substr($newstr,   $start,   $length);  
  }  
  ?>Top

6 楼juxugongzi(拘虚公子)回复于 2004-07-04 21:15:44 得分 0

嗬嗬,我也没有考虑速度,就像楼主说的,不一定要完美嘛!Top

7 楼mynamesucks(迅雷不及掩耳盗铃之势如破竹)回复于 2004-07-04 21:19:00 得分 0

学习。。Top

8 楼ccterran(iwind)回复于 2004-07-04 21:39:40 得分 50

用strip_tags  
   
  echo   substr(strip_tags($substr),0,100);Top

相关问题

  • 求函数:截取字符串
  • 截取字符串用什么函数?
  • sql server截取字符串的函数。
  • 请教截取字符串的函数。
  • 求PHP字符串截取函数
  • 高分求一字符串截取函数:如何截取 "1,12,32,43,5,6"
  • 初级问题:字符串截取函数?
  • VB Script有没截取字符串的函数?
  • 请教字符串截取处理函数.
  • 有没有依次截取指定字符串的函数?

关键词

  • 字符
  • html
  • 截取
  • 标签
  • substr

得分解答快速导航

  • 帖主:Minisheep
  • juxugongzi
  • ccterran

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo