我想在我的字符串中删除某些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
答案 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 );