php使用preg_replace删除顶级域名

时间:2016-07-07 14:24:32

标签: php preg-replace

我想在我的字符串中删除某些tld域名,但我遇到了一些问题。

$MyString = 'Amazon.com: pada port .com3 Dog Name Tags.com googl.com™ any.com™ on mys.co.uk® end.Commando is .commitment.com & communism.ca';
echo preg_replace('~\.(com|info|us|org|top|xyz|co\.in|co\.uk|ca|mobi)(?:[^a-z\d]|$)~i', '', $MyString );`

代码输出

Amazon pada port .com3 Dog Name Tagsgoogltrade; any on mys end.Commando is .commitment& communism

我想要的输出是

Amazon: pada port .com3 Dog Name Tags googl® any™ on mys®  end.Commando is .commitment & communism

1 个答案:

答案 0 :(得分:0)

问题很常见:​​您使用消费非捕获组(?:[^a-z\d]|$)实际上吃掉除字母数字或字符串结尾之外的字符因此preg_replace输出中缺少它。

改为使用字边界:

$MyString = 'Amazon.com: pada port .com3 Dog Name Tags.com googl.com® any.com™ on mys.co.uk® end.Commando is .commitment.com & communism.ca';
echo preg_replace('~\.(com|info|us|org|top|xyz|co\.in|co\.uk|ca|mobi)\b~i', '', $MyString );

查看PHP online demo