Regex替换http和HTTPS链接
我有以下preg_replace()
针对链接的函数:
$link = preg_replace(
"#http://([S]+?)#Uis", '<a href="http://\1">(link)</a>',
$link
);
它可以很好地处理http
链接,但显然不能处理https
链接。我如何调整它,使其也能与https
链接一起工作。
解决方案
只需在http
后添加s?
并匹配整个链接,然后使用$0
反向引用从替换模式中引用它:
$link = preg_replace(
"#https?://S+#i", '<a href="$0">(link)</a>',
$link
);
请参阅PHP demo
详细信息:
https?
-http
或https
://
-文字字符序列S+
-一个或多个非空格符号i
-不区分大小写修饰符。
注意U
修饰符很容易混淆(?
会写成??
,图案会变长),我建议删除它。
如果模式中没有.
,s
修饰符就没有意义,所以它也是多余的,我建议也删除它。
相关文章