我正在使用此代码在文本中查找网址并建立链接:
$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,它会成为正常链接吗?
答案 0 :(得分:0)
确认您的原始Regexp是正确的,您只需要:
$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://
(或其他协议)。查看捕获。您需要做的是查找是否存在,或者预先设置默认值。