仅使用HTML链接替换文本中的自己的网站URL

时间:2012-03-14 14:41:08

标签: php

当用户发表评论时,我会在插入我的数据库之前删除评论中的所有html标签,因为我不希望他们在评论中发布外部链接(SPAM)。但我只想删除外部链接,我想将自己的网站URL显示为普通的可点击链接。如何检测URL是我自己网站的URL并使其像往常一样可点击?

评论中的示例: Blah ......等等......等等...... http://my_website_url.com Blah ......等等......等等...... Blah ......等等......等等......等等......等等......等等...... Blah ......等等......等等...... Blah ......等等......等等...... http://external_links.com Blah ......等等......等等......等等......等等......等等......

如上例所示,我希望在插入我的数据库之前,只有http://my_website_url.com成为可点击链接。 (http://my_website_url.com至&lt; a href =“http://my_website_url.com”&gt; http://my_website_url.com< / a&gt;)

此外,不仅可以检测主URL:http://my_website_url.com,还可以:

-http://www.my_website_url.com

-www.my_website_url.com

-my_website_url.com

-http://my_website_url.com/blah/blah/blah

-http://www.my_website_url.com/blah/blah/blah

-www.my_website_url.com/blah/blah/blah

-my_website_url.com/blah/blah/blah

或来自我网站的任何网址:http://www.my_website_url.com/xxx/xxx/xxx/xxx

如果可以的话,请准确发布php代码,让我复制并粘贴到我的文件中,因为我对php只有很少的了解。多谢你们。 :)

1 个答案:

答案 0 :(得分:2)

我为它写了一个函数:

function makeSiteClickable($dom, $website = 'my_website_url.com')
{
    $words = explode(' ', $dom);
    foreach($words as &$word){
        if(strpos($word, $website) == true){
            // there you can make some sterilizing
            $href = str_replace('http://', '', $word);
            $href = str_replace('www.', '', $href);
            $word = '<a href="http://'.urlencode($href).'">'.$word.'</a>';
        }
    }

    return implode(' ', $words);
}