假设我有一串文字,例如
$text = "Hello world, be sure to visit http://whatever.com today";
我怎么能(可能使用正则表达式)插入链接的锚标签(将链接本身显示为链接文本)?
答案 0 :(得分:17)
您可以使用regexp执行此操作:
$html_links = preg_replace('"\b(https?://\S+)"', '<a href="$1">$1</a>', $text);
答案 1 :(得分:3)
我写这个功能。 它取代了字符串中的所有链接。链接可以采用以下格式:
第二个参数是链接的目标('_ blank','_ top'...可以设置为false)。 希望它有所帮助...
public static function makeLinks($str, $target='_blank')
{
if ($target)
{
$target = ' target="'.$target.'"';
}
else
{
$target = '';
}
// find and replace link
$str = preg_replace('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', '<a href="$1" '.$target.'>$1</a>', $str);
// add "http://" if not set
$str = preg_replace('/<a\s[^>]*href\s*=\s*"((?!https?:\/\/)[^"]*)"[^>]*>/i', '<a href="http://$1" '.$target.'>', $str);
return $str;
}