从字符串中删除链接

时间:2013-02-24 13:37:57

标签: php string url

我有一个函数可以删除这种格式的字符串中的所有链接:....它只会删除不在数组中的域的链接。如果链接的域不在数组中,它将删除链接标记,并且只有链接中的内部html。

看起来像这样:

if(!function_exists("checkLink")){ 

    function checkLink($link, $text){ 
        $safe_domains[] = "domain1.com"; 
        $safe_domains[] = "domain2.com"; 

        $prefix = ""; 

        if(substr($link, 0, 8) == "mailto:"){ 
            // do nothing - link is fine 
        } 
        else{ 
            $url = @parse_url($link, PHP_URL_HOST); 
            $dolink = false; 
            foreach($safe_domains as $domain){ 
                if(strpos($url, $domain) !== FALSE){ 
                    $dolink = true; 
                    break; 
                } 
            } 

            if(!$dolink){ 
                return preg_replace("/<\\/?a(\\s+.*?>|>)/", "", $text); 
            } 

        } 

        return "<a href=\"$link\" target=\"_blank\">$text</a>"; 

    } 
} 

$post['message'] = preg_replace("/<a href=\\\"(.*?)\\\" target=\\\"_blank\\\">(.*?)<\/a>/ime", 'checkLink("$1", "$2")',$post['message']);

然而,问题是,虽然它可以正常使用这样的链接:

<a href="http://example.com" target="_blank">Link text</a>

如果链接中有换行符,则无效:

<a href="http://example.com" target="_blank">Link 
text</a>

任何有此解决方案的人?谢谢!

0 个答案:

没有答案