Orshu论坛程序最新进度(20)

王志勇 发表于 2011年04月18日 21:10

这两天做了一些小的调整。从2009年4月30日我编写的第一个PHP论坛程序ufoaq.com上线到现在,这个论坛程序已经使用将近2年了,后来这个论坛程序命名为“Orshu论坛程序”。昨天用了半天的时间,编写了网址识别的程序,今天又对网址识别程序做了小的修改,修正了一些不足和错误,同时也提高了网址识别的正确率。现在这个网址识别程序的识别率已经比较高了,对于大多数相对“规则”的网址,能够正确识别。

网址识别程序在过去对我来说一直是个难点,实现起来很困难。又因为一直有比它更重要的事情,一直没有时间来专门编写和测试网址识别功能。过去在Orshu论坛程序中,都需要论坛的管理人员手动把网址转化为超链接。昨天经过编写和逐一测试,没想到突然实现了。

这个网址识别程序的功能是当用户发帖中含有一个或者多个http://的网址时,都会自动转化为超链接。识别的规则为在PHP程序中,无论是UTF-8还是ANSI编码,中文的ASCII编码可能都大于160。经过大量的测试,ASCII码顺序为35,37,38,61,95,126的字符不断开,以及ASCII码顺序为大于42小于59、大于62小于91、大于96小于123区间的字符不断开,仍识别为网址。除此之外的字符,会断开,也就是从http://这7个字符开始,到这个断开的位置,为一个网址。当留言中有多个网址时,同理,使用循环程序执行。

,.:这3个符号,也就是半角的逗号、点、冒号这3个字符不断开,如果网址中含有逗号、点、冒号,不会断开。只有当这3个字符中的一个在最后,并且在这个字符后面是一个空格、或者回车、或者全角字符,这种情况下,在最后的逗号、点、冒号之前断开。这种情况,在英文的留言最常见。逗号、点、冒号在英文中是半角的,正确的格式为在英文的段落中逗号、点、冒号后面要有一个空格。例如这句话:Please access http://www.zj7.com/strive/151, it's an example. 在这句话中,会把http://www.zj7.com/strive/151截取出来,不含151后面的逗号。在这句话中,Please access http://www.zj7.com/strive/151,2,303.html, it's an example. 会把http://www.zj7.com/strive/151,2,303.html截取出来,不含151后面的逗号。151,2,303.html中的逗号能够识别为网址之内,是因为逗号后面的字符,符合网址的规则,因此不断开。在网址最后的逗号后面因为有空格,所以在最后的逗号之前断开。

在识别每个字符方面,并不是对整段文字的每个字符进行处理,而是查找http://这7个字符开始的位置,当循环到不符合网址规则的地方断开,这时停止循环,可节省资源。由于https://网址在论坛中被引用得不是很多,因此暂不识别https://网址。当需要的时候,再修改程序,也就是把整个程序再执行一遍,把http://改为https://。

另一条规则是http://abc这样的形式,不会转化为超链接;http://abc.com等形式的网址,会转化为超链接。识别的方法是网址的域名中含有“.”(点)的字符,是一个规则的域名,则转化为超链接。

0条评论:

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (41周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2021年06月(9)
2021年05月(17)
2021年04月(25)
2021年03月(6)
2021年02月(17)
2021年01月(30)
2020年12月(19)
2020年11月(18)
2020年10月(15)
2020年09月(14)
2020年08月(14)
2020年07月(14)
2020年06月(16)
2020年05月(13)
2020年04月(18)
2020年03月(14)
2020年02月(15)
2020年01月(16)
2019年12月(11)
2019年11月(26)
2019年10月(25)
2019年09月(30)
2019年08月(10)
2019年07月(29)
2019年06月(30)
2019年05月(26)
2019年04月(30)
2019年03月(30)
2019年02月(30)
2019年01月(30)
2018年12月(30)
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2021 auiou.com All rights reserved.
此Blog程序由王志勇编写