王志勇 发表于 2011年04月18日 21:10
网址识别程序在过去对我来说一直是个难点,实现起来很困难。又因为一直有比它更重要的事情,一直没有时间来专门编写和测试网址识别功能。过去在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等形式的网址,会转化为超链接。识别的方法是网址的域名中含有“.”(点)的字符,是一个规则的域名,则转化为超链接。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
2024.9感言
人生讨论(20):有人借钱怎么办?(2)
人生讨论(19):迄今为止最强的情感频道
数码评测(67):让小米/红米手机的反应提高1~2倍
数码评测(66):无线网卡FW150UH VS FW150UH
数码评测(65):如何快速自制CPU天梯图?
数码评测(64):2024年,你还在用VGA线吗?
人生讨论(18):6年就可以实现财务自由
人生讨论(17):为什么总是受欺负?
人生讨论(16):要钱的最新妙招
创业杂谈(17):什么项目能赢利?
人生讨论(15):有人借钱怎么办?
数码评测(63):高清切换超级神器
数码评测(62):再谈视频的尺寸
数码评测(61):近期数码采购和折腾
人生讨论(14):看穿尊重
数码评测(60):图拉丁-最佳中配工作“免费”手机
创业杂谈(16):博客何时终结?
创业杂谈(15):互联网项目
创业杂谈(14):LAMP项目
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +