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

Hen*_*son -1 php regex preg-replace

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

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

它适用于http链接,显然没有https链接.如何调整它以便它也适用于https链接.

Wik*_*żew 5

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

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

请参阅PHP演示

细节:

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

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

s修改没有任何意义,如果图案不具有.的,因此它也是多余的,我建议删除这一点.