我想让我的链接自动点击,但它不起作用。
这是我的代码:
$val['message'] = preg_replace('#https?://(w{3}.)?([a-zA-Z0-9_-]{1,20}(.[a-zA-Z0-9_-]{1,10}))(/[a-zA-Z0-9_-]{1,12}(/[a-zA-Z0-9_-]{1,12}))?(/([a-zA-Z0-9_-]{1,20})(.[a-zA-Z0-9_-]{1,7}))?(\?[a-zA-Z0-9_-]{1,7}=[a-zA-Z0-9_-]{1,7}(&[a-zA-Z0-9_-]{1,7}=[a-zA-Z0-9_-]{1,7}))?#is', '$0', $val['message']);
(这是我的preg事情,但有线:)
'https?://
(w{3}.)?
([a-zA-Z0-9_-]{1,20}(.[a-zA-Z0-9_-]{1,10}))
(/[a-zA-Z0-9_-]{1,12}(/[a-zA-Z0-9_-]{1,12}))?
(/([a-zA-Z0-9_-]{1,20})
(.[a-zA-Z0-9_-]{1,7}))?
(\?[a-zA-Z0-9_-]{1,7}=[a-zA-Z0-9_-]{1,7}
(&[a-zA-Z0-9_-]{1,7}=[a-zA-Z0-9_-]{1,7}))?
我也试过这个:
$val['message'] = preg_replace("#(([\w]+?://[\w#$%&~.-;:=,?@[]+])(/[\w#$%&~/.-;:=,?@[]+])?)#is", "$1", $val['message']);
但不适用于https://www.youtube.com/watch?v=videolink
答案 0 :(得分:1)
试试这个正则表达式,为我工作:
(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?
答案 1 :(得分:1)
为什么每个人都想尝试为此制作自己的正则表达式?链接链接很难处理很多边缘情况,更不用说应该或不应该包含在链接中的内容,例如。
你在谈论youtube.com吗?
我喜欢ASP.net语言
我想知道www.stackoverflow.com是什么链接
圆括号是一个特别痛苦的例子:例如:http://example.com/?auth=gH;2($ Hd)DA0; QAb)
除此之外:在上面的最后一行中,StackOverflow的预览部分将所有内容链接到最后一个结束括号,但在提交后它只链接到第一个标点符号括号。帮助证明我的观点,即尽管如此努力才能保持正确和稳定!
最好使用已建立的东西,例如:
https://github.com/misd-service-development/php-linkify
对于更快速的东西:
http://buildinternet.com/2010/05/how-to-automatically-linkify-text-with-php-regular-expressions/