我有一个textarea字段,我想让用户输入任何文本(包括但不限于网址)。我为输入禁用了html,因此不允许使用标记。我需要能够将这些类型的网址转换为链接:
http://example.com
www.example.com
example.com
http://example.com/path/to/something
http://example.com/path/to/something.php?v1=a&v2=b
或者基本上用户可以从浏览器中复制/粘贴的任何网址。我接近获得一个功能齐全的版本,但我的正则表达式与www.example.com文本无法正常工作。这是我正在使用的PHP代码:
// Convert links in a string to links
function linkify($str)
{
// Change www.example.com into http://www.example.com
$str = str_replace('www.', 'http://www.', $str);
$str = str_replace('http://http://www.', 'http://www.', $str);
// Find and replace
$exp = '@(http)?(s)?(://)?(([-\w]+\.)+([^\s]+)+[^,.\s])@';
preg_match_all($exp, $str, $matches);
$matches = array_unique($matches[0]);
foreach($matches as $match)
{
$replacement = '<a href="'.$match.'">'.$match.'</a>';
$str = str_replace($match, $replacement, $str);
}
return $str;
}
任何人都可以帮我调整我的代码,让它与所有示例网址一起使用吗?