检测textarea中的URL并将其替换为PHP中的链接

时间:2014-04-30 16:21:47

标签: php

如何检测包含http://的文字区域中的网址?以下是输入的示例:

  你好兄弟!看看我的新网站:www.example.com。我试图从http://another.example.net和example.net构建网站。

有没有办法将其转换为此代码?:

Hi bro! Look at my new website: <a href="http://www.example.com">www.example.com</a>.
I leard to build websites from <a href="http://another.example.com">http://another.example.net</a>
and from <a href="http://example.net">example.net</a>.

正如您所看到的,代码会检测是否存在URL,即使它不是以http://www开头,也会将a标记添加到{{1 }}

1 个答案:

答案 0 :(得分:1)

请参阅此基本示例。它允许您匹配多行文本,并且不会限制太多。您可以拥有指向内部网络的链接,其中使用的机器主机名如下:http://myspecialserver - 这是有效链接,无论它是否只能由某些网络访问。

anwser使用正则表达式。您可以在此处详细了解它们:http://www.tutorialspoint.com/php/php_regular_expression.htm

我们与它们匹配协议以及之后与URL一致的任何文本,它不包含空格字符,制表符,回车符和换行符。

<?php
function linkify($text) {
    return preg_replace('#\b(http|ftp)(s)?\://([^ \s\t\r\n]+?)([\s\t\r\n])+#smui', '<a href="$1$2://$3">$1$2://$3</a>$4', $text);
}

echo nl2br(linkify('
    Hello, visit https://www.domain.com
    We are not partners of http://microsoft.com/ :)
    Download source from: ftp://new.sourceforge.com
'));
?>