怎样防止截取摘要时将img标签截断?
CSDN - 专家门诊 -
主 题: 怎样防止截取摘要时将img标签截断?
作 者: ccxxcc (cc小超)
信 誉 值: 100
所属论坛: Web 开发 PHP
问题点数: 200
回复次数: 16
发表时间: 2006-07-17 09:19:58
需要从一篇文章中截取前500个字符,做为文章摘要,怎样保证文章中的img标签不被截断?用正则能解决吗?
回复人: xuzuning(唠叨) ( ) 信誉:739 2006-07-17 09:55:00 得分:0
既然是 做为文章摘要 那么img标签就可以不要了吧???
Top
回复人: ccxxcc(cc小超) ( ) 信誉:100 2006-07-17 10:00:00 得分:0
可是项目的需求就是这样啊 摘要组成了文章列表 为了增加列表内容的吸引力,需要图片
Top
回复人: longjing_g(龙睛) ( ) 信誉:100 2006-07-17 10:24:00 得分:0
正则可以解决。将img 做一个开始和结束标记
Top
回复人: lantersen(蓝水仁) ( ) 信誉:100 2006-07-17 10:27:00 得分:0
鄙人认为:能不能对读取的内容判断下,再进行取舍,UP。
Top
回复人: chinahuman(铁匠) ( ) 信誉:111 2006-07-17 10:30:00 得分:0
那就是先取前五百,然后再后后面有没有未封装的HTML标签,如果有,再往后取几位,把标签封闭了。
Top
回复人: caotian2000() ( ) 信誉:100 2006-07-17 10:33:00 得分:0
我做的BLOG中程序也要这种功能,请哪位仁兄请指一二!如果有答案了最好也告诉我一下
Top
回复人: zeroleonhart(Strong Point:Algorithm) ( ) 信誉:100 2006-07-17 10:42:00 得分:0
I wanna know how you deal with the other html tags like table....
Top
回复人: keaizhong(可爱钟)(温州的PHPER)(19801010) ( ) 信誉:103 2006-07-17 10:44:00 得分:0
只有一个图片标签可以在取得500字之后再最后一段进行查寻判断,确定是否只截取了图片标签的半段。 不过感觉上也不是什么好办法,只是一个不是办法中的办法。嘿嘿。
Top
回复人: caotian2000() ( ) 信誉:100 2006-07-17 10:58:00 得分:0
问题是不光是图片啊
Top
回复人: ccxxcc(cc小超) ( ) 信誉:100 2006-07-17 11:01:00 得分:0
我会把table div tr td不需要的标签全部去除 只留下内容 /** * Works like PHP function strip_tags, but it only removes selected tags. * Example: * strip_selected_tags(‘Person: Salavert‘, ‘strong‘) => Person: Salavert */ function strip_selected_tags($text, $tags = array()) { $args = func_get_args(); $text = array_shift($args); $tags = func_num_args() > 2 ? array_diff($args,array($text)) : (array)$tags; foreach ($tags as $tag){ if(preg_match_all(‘/]*>(.*)/iU‘, $text, $found)){ $text = str_replace($found[0],$found[1],$text); } } return $text; }
Top
回复人: xuzuning(唠叨) ( ) 信誉:739 2006-07-17 11:01:00 得分:0
对于含有html标记的文档(不仅只是img,可能还有其他的标记),需要使用不同于一般字符串截取的方法。 需要从一篇文章中截取前500个字符,做为文章摘要,怎样保证文章中的img标签不被截断?用正则能解决吗? TEXT; $ar = preg_split("/()/is", $text, -1, PREG_SPLIT_ALL); print_r($ar); ?> 你可以看到,文档被分割成了数块 Array ( [0] => Array ( [0] => 需要从一篇文章中截取前500个字符,做为文章摘要,怎样保证文章中的img标签不被截断?用正则能解决吗? [1] => 0 ) [1] => Array ( [0] => [1] => 96 ) [2] => Array ( [0] => 需要从一篇文章中截取前500个字符,做为文章摘要,怎样保证文章中的img标签不被截断?用正则能解决吗? [1] => 113 ) [3] => Array ( [0] => [1] => 209 ) ) 数组元素的第二维分别是匹配到的内容和该内容在原文档中的位置 根据这些信息,你可以很方便的提取你需要的内容 通常摘要文字的长度是不包括html标记的
Top
回复人: caotian2000() ( ) 信誉:100 2006-07-17 11:19:00 得分:0
这个很棒啊,要是想截取
这样的正则应该怎么写? 还有要是
Top
回复人: caotian2000() ( ) 信誉:100 2006-07-17 11:23:00 得分:0
希望唠叨兄弟写一个完整的出来,期待中..........造福人民啊
Top
回复人: xuzuning(唠叨) ( ) 信誉:739 2006-07-17 11:31:00 得分:0
foreach($ar as $v) { if($v[0][0] != ‘= 500) break; } 这里没有用到$v[1]
Top
回复人: zeroleonhart(Strong Point:Algorithm) ( ) 信誉:100 2006-07-17 11:35:00 得分:0
我会把table div tr td不需要的标签全部去除 只留下内容 -------------------------- then how about ??????
Top
回复人: caotian2000() ( ) 信誉:100 2006-07-17 11:37:00 得分:0
不能去掉啊,一定要留着那些标签
Top