0

我正在使用此代码在文本中查找 URL 并创建链接:

$reg_exUrl = "/((((http|https|ftp|ftps)\:\/\/)|www\.)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/";
$text = preg_replace( $reg_exUrl, "<a href=\"$1\" target='_blank'>$1</a>", $text);

但是如果网站没有http,https,ftp,ftps或www,它就不会建立链接,例如,google.com不会成为链接。此外,如果网站只有 www,例如 www.google.com,则链接为 mywebsite.com/www.google.com。你能帮我解决这些问题吗,如果文本中有 somewebsite.com 和 www.somewebsite.com ,它将成为正常链接?

4

1 回答 1

0

假设您的原始正则表达式是正确的,您需要做的就是:

$reg_exUrl = "/((((http|https|ftp|ftps)\:\/\/)|www\.)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/";
                                                     ^ -- Optional!

您必须在这里解决一个主要问题。假设文本包含“google.com”,您的正则表达式会吐出<a href="google.com">google.com</a>会给您一个 404(因为这会引导您到 yourDomain.com/google.com)!您需要预先添加http://(或其他协议)。查看捕获。您需要做的就是查找它是否存在,或者添加一个默认值。

于 2013-04-23T12:04:56.917 回答