i want to remove certain tld domain on my string, but i got a few problem.
$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 );`
the code output is
Amazon pada port .com3 Dog Name Tagsgoogltrade; any on mys end.Commando is .commitment& communism
output that i want is
Amazon: pada port .com3 Dog Name Tags googl® any™ on mys® end.Commando is .commitment & communism
The issue is common: you used a consuming non-capturing group (?:[^a-z\d]|$)
that actually eats up a char other than an alphanumeric or end of string and it is thus missing in the preg_replace
output.
Use a word boundary instead:
$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 );
See a PHP online demo