php使用preg_replace删除顶级域

php使用preg_replace删除顶级域,php,preg-replace,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)

我想删除字符串上的某些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

这个问题很常见:您使用了一个消费非捕获组
(?:[^a-z\d]|$)
,该组实际消耗的字符不是字母数字或字符串结尾,因此在
preg\u 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 );

请参见一个

问题很常见:您使用了一个消费非捕获组
(?:[^a-z\d]|$)
,该组实际消耗的字符不是字母数字或字符串结尾,因此在
preg\u 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 );

请参阅a

(?:[^a-z\d]|$)
将匹配额外的字符并将其删除,因为您没有将它们放入替换字符串中。如果我删除(?:[^a-z\d]|$)=>。com3将被删除到什么意思。com3不是有效的tld?icann现在几乎允许一切,包括厨房水槽,如TLD。你不能用一个简单的正则表达式来过滤本质上是一个不断变化的可能tld列表。对不起,我只是想删除某些模式上的tld,并不是所有tld都可以使用preg\u replace\u回调(“~”。(com | info | us | org | top | xyz co.in | co.uk ca | mobi)(?:[^a-z\d]$)~I',函数($d){return substr
(?:[^a-z\d]|$)
将匹配额外的字符并删除它们,因为您没有将它们放入替换字符串中。如果我删除(?:[^a-z\d]|$)=>。com3将被删除。这说明什么。com3不是有效的tld?icann现在几乎允许一切,包括厨房水槽,如TLD。你不能用一个简单的正则表达式来过滤本质上是一个不断变化的可能tld列表。对不起,我只是想删除某些模式上的tld,并不是所有tld都可以使用preg\u replace\u回调(“~”。(com | info | us | org | top | xyz co.in | co.uk ca | mobi)(?:[^a-z\d]$)~I',函数($d){return substr;