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

Minisheep 2004-07-04 07:57:23
我从数据库中读出一段文章存到$str,由于太长所以截取一段做预览。但这文章中有HTML。即里面有<table>、<font>、<marquee>等标签,若直接用substr截取肯定会破坏版面。所以请高手写一个函数来截取。不一定很完美,只要能尽量不破坏版面就行。
...全文
214 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccterran 2004-07-04
  • 打赏
  • 举报
回复
用strip_tags

echo substr(strip_tags($substr),0,100);
mynamesucks 2004-07-04
  • 打赏
  • 举报
回复
学习。。
juxugongzi 2004-07-04
  • 打赏
  • 举报
回复
嗬嗬,我也没有考虑速度,就像楼主说的,不一定要完美嘛!
juxugongzi 2004-07-04
  • 打赏
  • 举报
回复
我草草写了一个,你看看:
<?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);
}
?>
Minisheep 2004-07-04
  • 打赏
  • 举报
回复
我也有过这种想法,先截取一段,比如400个字符
然后计算里面<table>、</table>标签的个数,最后再补上不够的
但这样速度不是很好,可能我的算法不行,谁能写一个吗?
juxugongzi 2004-07-04
  • 打赏
  • 举报
回复
我想可以使用这个思路:
不要去处理HTML标签,一一去读字符串中的字符,即读到一个 < 就入栈(计数加一),读到一个 > 就出栈(计数减一),这样,如果栈为空(计数为0),则表示当前的字符不是HTML标签的组成部分。这样,只收集非HTML标签字符即可。
surfchen 2004-07-04
  • 打赏
  • 举报
回复
htmlspecialchars ( string string [, int quote_style [, string charset]])
please try this function
mistjin 2004-07-04
  • 打赏
  • 举报
回复
看看正则表达式,自己摸索写一下先

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧