正则表达式替换http和https链接

时间:2017-03-21 14:12:28

标签: php regex preg-replace

我有以下preg_replace()功能定位链接:

$link = preg_replace(
    "#http://([\S]+?)#Uis", '<a href="http://\\1">(link)</a>', 
    $link
);

它适用于http链接,但显然不适用于https链接。如何调整它以便它也适用于https链接。

1 个答案:

答案 0 :(得分:5)

只需在s?之后添加http并匹配整个链接,然后使用$0反向引用从替换模式中引用它:

$link = preg_replace(
    "#https?://\S+#i", '<a href="$0">(link)</a>', 
    $link
);

请参阅PHP demo

<强>详情:

  • https? - httphttps
  • :// - 文字字符序列
  • \S+ - 一个或多个非空白符号
  • i - 不区分大小写的修饰符。

请注意,U修饰符令人困惑(?将被写为??,并且模式会变得更长),我建议将其删除。

如果模式中没有s,则.修饰符没有意义,因此它也是多余的,我建议也将其删除。