王志勇 发表于 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吗?
近期的主题:
夜晚靓歌(11):女声版《直到世界的尽头》
人生讨论(24):深圳是出行最差的城市
人生讨论(23):心灵帖=智慧帖 & 致富原理
推荐2026年度的新型特级网红
秒会+实战PHP程序设计培训(2)
趣谈民谣吉他/古典吉他
人生讨论(22):瀑布秋千坠亡事件的深入本质
人生讨论(21):“明白不”的心理机制
明星经济和创业思维(3)
明星经济和创业思维(2)
明星经济和创业思维
博客近况和话题
“叱咤”的粤语正确读音
有关一语成谶成立吗?
伟大的人:张雪峰先生
为什么很多大V都会有深度黑粉?
成事的关键
同岁歌手:谢霆锋
待填充
2025的年底感言
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2025年-2026年03月(10)
2024年(13)
2023年 +