【问题标题】:Only replace own website url in text with HTML links仅用 HTML 链接替换文本中自己的网站 url
【发布时间】:2012-03-14 23:53:12
【问题描述】:

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

评论中的例子: 废话...废话...废话...http://my_website_url.com废话...废话...废话...废话...废话...废话...废话...废话...废话.. . 废话...废话...废话...废话...废话...废话...http://external_links.com废话...废话...废话...废话...废话。 ..废话...

如上例,我只希望http://my_website_url.com 在插入我的数据库之前成为可点击的链接。 (http://my_website_url.com 到 http://my_website_url.com

另外,不仅检测主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

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

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

【问题讨论】:

    标签: php


    【解决方案1】:

    我为它写了一个函数:

    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);
    }
    

    【讨论】:

    • 感谢 seferov,但如果单词后面有逗号或换行符,则代码不起作用。示例:这是一个测试:my_website_url.com, and blah blah blah... 如上例,它将回显:my_website_url.com, 或者如果有行在 my_website_url.com 之后中断,它将回显:my_website_url.com

      this
      .
    • 我只是给出代码的基本结构。您可以将这些字符组合成一个数组并相应地分解整个文件
    猜你喜欢
    • 1970-01-01
    • 2014-08-01
    • 2010-12-26
    • 2013-02-18
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    相关资源
    最近更新 更多