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 (44周岁)
程序设计,前端设计。

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

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

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

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