将函数改为使用preg_replace()替代ereg_replace()

5

可能是重复问题:
用preg_replace替换ereg_replace

在一个代码库中,我有以下函数可以将字符串转换为活动链接。我注意到ereg_replace()已经过时了。我该如何更改它以使用preg_replace?

 function makeActiveLink($originalString){

        $newString = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target=\"_blank\">\\0</a>", $originalString);
        return $newString;
    }
2个回答

4
您可以保持几乎完全相同,但最好更改一些内容:
您可以保持几乎不变,但最好改动一些东西:
function makeActiveLink($originalString){
    $newString = preg_replace('#[a-z]+://[^<>\s]+[[a-z0-9]/]#i', '<a href="\0" target="_blank">\0</a>', $originalString);

    return $newString;
}

请注意,我使用#作为分隔符,因为您的字符串中有斜杠。

你可以使用 A-z 代替 a-zA-Z,或者使用 a-z 并加上 i 修饰符来告诉正则表达式引擎忽略大小写。 - Samir Talwar

1
function makeActiveLink($originalString) {
    $pattern '#[a-z]+://[^<>\s]+[[a-z0-9]/]#i';
    $newString = preg_replace($pattern, '<a href="\\0" target="_blank">\\0</a>', $originalString);

    return $newString;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接