通过正则表达式隐藏链接

时间:2014-10-31 03:45:08

标签: php regex

我正在使用此正则表达式代码隐藏PHP页面中的链接;

$msg = preg_replace("#(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)#is",'',$msg);

也试过这个;

$msg = preg_replace("#<a[^>]*(http|www)(.*)</a>#siU", "","{$msg}");

似乎没什么用。请帮忙找到正确的正则表达式?


我的字符串:

$msg = 'asdsadasdas

    LINK:
    -----
    www.google.com

    <a href="www.google.com">Google.com</a>

    [url=www.google.com]Google URL[/url]';

输出如下:

asdsadasdas

LINK:
-----
www.google.com



[url=www.google.com]Google URL[/url]

但是,它应该是这样的:

asdsadasdas

LINK:
-----

2 个答案:

答案 0 :(得分:2)

以下正则表达式可以达到目的

/^.*\b(http:\/\/)?(www\.)[^.]+\.com\b.*$/

将所有行(完全)与其中的链接匹配。

例如,请参阅http://regex101.com/r/yQ6bY1/3

$msg = preg_replace("/^.*\b(http:\/\/)?(www\.)[^.]+\.com\b.*$/m",'',$msg);

将提供输出

asdsadasdas LINK: -----

答案 1 :(得分:1)

这对我有用:

    $msg = preg_replace("#<a[^>]*(http|www)(.*)</a>#siU", "","{$msg}");
    $msg = preg_replace("#\[url=([^\r\n\"<&\(\)]+?)\](.+?)\[/url\]#esi", "","{$msg}");
    $msg = preg_replace("#([\>\s\(\)])(www|ftp)\.(([^\/\"\s\<\[\.]+\.)*[\w]+(:[0-9]+)?(/[^\"\s<\[]*)?)#i", "","{$msg}");