我有以下preg_replace()
功能定位链接:
$link = preg_replace(
"#http://([\S]+?)#Uis", '<a href="http://\\1">(link)</a>',
$link
);
它适用于http
链接,但显然不适用于https
链接。如何调整它以便它也适用于https
链接。
答案 0 :(得分:5)
只需在s?
之后添加http
并匹配整个链接,然后使用$0
反向引用从替换模式中引用它:
$link = preg_replace(
"#https?://\S+#i", '<a href="$0">(link)</a>',
$link
);
请参阅PHP demo
<强>详情:
https?
- http
或https
://
- 文字字符序列\S+
- 一个或多个非空白符号i
- 不区分大小写的修饰符。请注意,U
修饰符令人困惑(?
将被写为??
,并且模式会变得更长),我建议将其删除。
如果模式中没有s
,则.
修饰符没有意义,因此它也是多余的,我建议也将其删除。