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修饰符就没有意义,所以它也是多余的,我建议也删除它。
相关文章