Search code examples
phpregexreplacepreg-replacestr-replace

Replace all domain including subdomain name using PHP with Regex


I am using preg_replace or str_replace in PHP to replace all the domain name including www

$string = ' https://example.com, https://www.example.com, https://subdomain.example.com ';
$olddomain= "example.com";
$newdomain = "stackoverflow.com";

$output = str_replace($olddomain, $newdomain, $string);
$output = preg_replace('#(www[.])?[.]' . $olddomain. '#', $newdomain, $body);

echo $output;

My expectation:

https://example.com -> https://stackoverflow.com

https://www.example.com -> https://stackoverflow.com

https://subdomain.example.com -> https://subdomain.example.com

Solution

  • No need for a regex, just pass the www. with the other change in into str_replace(). Remember str_replace() accepts an array of things to "change from" and "change to".

    $string = ' https://example.com, https://www.example.com, https://subdomain.example.com ';
    $olddomain = ["example.com",'www.'];
    $newdomain = ["stackoverflow.com", ''];
    
    $output = str_replace($olddomain, $newdomain, $string);
    echo $output;
    

    RESULT

     https://stackoverflow.com, https://stackoverflow.com, https://subdomain.stackoverflow.com