Php 自动超链接将额外的HTTP://添加到开头?

Php 自动超链接将额外的HTTP://添加到开头?,php,html,Php,Html,我有以下脚本,可以超链接我网站上发布的任何链接: $text = trim($text); while ($text != stripslashes($text)) { $text = stripslashes($text); } $text = strip_tags($text,"<b><i><u>"); $text = preg_replace("/(?<!http:\/\/)www\./","http://w

我有以下脚本,可以超链接我网站上发布的任何链接:

    $text = trim($text);
    while ($text != stripslashes($text)) { $text = stripslashes($text); }    
    $text = strip_tags($text,"<b><i><u>");
    $text = preg_replace("/(?<!http:\/\/)www\./","http://www.",$text);
    $text = preg_replace( "/((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\" target=\"_new\">\\0</a>",$text);
$text=trim($text);
而($text!=stripslashes($text)){$text=stripslashes($text);}
$text=strip_标签($text,“”);
$text=preg_replace(“/(?\s]+)/i”,”,$text);

但是,由于某种原因,如果我添加一个
https://www.test.com
链接它最终显示如下-
https://http://www.test.com
-我做错了什么?我如何使它与https链接一起工作?它适用于http链接。谢谢!:-)

您在这里的查找,
(?仅匹配
http://
,但您的测试输入(失败)是
https://

您可以添加与当前查找链接的第二个查找,以指定可选的
https://
版本:

(?<!http:\/\/)(?<!https:\/\/)www\.
(?
这将使您的完整行看起来像:

$text = preg_replace("/(?<!http:\/\/)(?<!https:\/\/)www\./","http://www.",$text);

$text=preg\u replace(“/”?可能重复感谢!工作非常出色!:D