php截取中英文HTML字符串不错位

F2blog一直为这个自动截取和手工截取常常因为载取的HTML不完整而引起界面错位的现象非常严重。(特别说明:自动截取的字数是汉字和中文标点为一个字,英文与标点为一个字)

今天狠下功夫,终于自己写了一个完整的函数来处理这个自动截取和手工截取的功能,让F2blog再也不受这个自动截取和手工截取时标签不对称的问题而烦恼了。在网上找了很久的资料也没有见过类似的完整函数下载,故我单独把这个功能抽出来了放在一个文件中,里面提供了详细的使用说明,可以用于任何需要处理HTML字符串的PHP程序中,给有需要的朋友下载使用,如果转帖,请提供来源为http://www.cnblog.biz/read-196.html。谢谢。

HTML截取函数(公共版,可以用于其它PHP程序,里带有详细的帮助文档,F2blog的用户升级无需下载此文件。)
下载文件HTML截取函数(公共版,需要的朋友可以下载).zip (2.85 KB ,下载:2166次)

以上经过我严格的测试,如果大家在试中发现了问题,请与我联系。
(2007-02-08修正了手工截取时HTML代码中含有媒体播放代码参数时<param ../>时将会显示此媒体的问题。)

修正办法就是在67行的增加一段
CODE:
 && !preg_match("/<param([^>]+?)>/is",$value),
变成
CODE:
if (!preg_match("/<img([^>]+?)>/is",$value) && !preg_match("/<param([^>]+?)>/is",$value) && !preg_match("/<!([^>]+?)>/is",$value) && !preg_match("/<br([^>]+?)>/is",$value) && !preg_match("/<hr([^>]+?)>/is",$value)) {




测试报告:原文档内容,从word中复制来的,里面包含有非常复杂的html代码,我再给它加了隐藏,分页,和阅读全文的功能(注:换以前的话,这个文档绝对把页面全部搞乱了,现在一切正常了)
attachments/month_200701/6424418070.jpg

首页显示效果(一切正常了。)
attachments/month_200701/9142321823.jpg


还有在样式中间截取的效果图:(字体等一切正常了)
attachments/month_200701/8921731814.jpg
引用通告地址: 点击获取引用地址
评论: 8 | 引用: 1 | 阅读: 7086
  • 1 
kesor [ 2007-01-26 13:03 | 回复 | 编辑 删除 ]
Harry,F2blog中的图片经常会"变形",不知道怎么回事哦
这个东西我先下了,研究一下,谢谢
Harry Zhang [ 2007-01-26 20:30 网址 | 回复 | 编辑 删除 ]
变形你去掉skins里的global.css中的img这一行看看。
凉茶 [ 2007-04-24 22:07 | 回复 | 编辑 删除 ]
发现截取后多了很多<BR>
几乎是每个<p></p>生成一个<BR>
Harry Zhang [ 2007-04-26 07:38 网址 | 回复 | 编辑 删除 ]
是不是你的文章内容本身有很多<br>啊,<p></p>这样的空白标签会被去掉啊。
abc [ 2007-09-09 11:59 | 回复 | 编辑 删除 ]
$source_html=<<<EOF
<div style="background:#CCDDEE;width:300px;height:200px;margin-left:auto;margin-right:auto;border-color:red">
测试代码,最张校对字符数为统计截取后的字数与你需要截取的字数是否相同,如果相同,表示截取的字符串完全正确了。
</div>
EOF;

改成这样截取就有误了.
longbill [ 2007-10-23 18:41 网址 | 回复 | 编辑 删除 ]
谢谢,很有用。
  • 1 
phpangel's Blog [2007-05-03 13:43 ]
标题: php截取中英文HTML字符串不错位
链接: http://www.phpangel.cn/?id=34
摘要: 文章来源:http://korsen.f2blog.com/read-196.html 在许多blog系统的开发中,文章列表显示文章简介是必要的功能 许多blog系统都是通过在数据库中添加一个字段解决此类问题 但是那样明显增大了数据库空间 此函数解决了问题 好像是f2blog的作者 htmlSubString 函数为截取HTM... ...
发表评论
昵 称: 密 码:
网 址: 邮 箱:
验证码: 验证码图片 选 项:
头 像:
内 容: