我需要让我的用户知道他们正在点击外部链接。我的网站上有很多种聊天,有时用户发布链接,这些链接对他们来说可能是危险的,所以我想在离开网站之前警告他们。
例如,eveonline.com在其论坛上使用以下内容:http://www.eveonline.com/externalLink.aspx?l=http://altdevblogaday.com/2011/07/11/the-hidden-evil-of-the-micro-transaction/
每当链接显示时,他们会看到该域名是否与eveonline.com不同,如果是,则会向其添加“http://www.eveonline.com/externalLink.aspx?l=”。
这是我的makeClickableLinks函数,我用它来使链接可点击,我想知道是否有人可以重写,如果我做上述+可点击,因为我没有写这个功能,因为我对preg_match一无所知。
function makeClickableLinks($text)
{
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','<a target="_blank" href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1<a target="_blank" href="http://\\2">\\2</a>', $text);
return $text;
}
变量$ text是用户的帖子。
答案 0 :(得分:1)
我不是PHP向导,但试一试。请注意,几乎所有这些都直接来自PHP手册here。
function makeClickableLinks($text)
{
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a target="_blank" href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'\\1<a target="_blank" href="http://\\2">\\2</a>',
$text);
$regex = '@(<a.*?href=")((?!(?:(?:f|ht)tps?://)?(?:[a-z0-9]+\.)?domain\.com)[^"]*)@i';
$replacement = '$1http://your.domain.com/externLink.php?l=$2';
$text = preg_replace($regex, $replacement, $text);
return $text;
}