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
CodePudding user response:
preg_replace with regex.
$string = ' https://example.com, https://www.example.com, https://subdomain.example.com ';
$olddomain= "example.com";
$newdomain = "stackoverflow.com";
$output = preg_replace('#(https://(www\.)?)' . $olddomain. '#', '$1' . $newdomain, $string);
echo $output;
Output :
https://stackoverflow.com, https://www.stackoverflow.com, https://subdomain.example.com
CodePudding user response:
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
CodePudding user response:
Without using Regex
$string = ' https://example.com, https://www.example.com, https://subdomain.example.com ';
$olddomain= "example.com";
$newdomain = "stackoverflow.com";
$parts = explode(",", $string);
$new_parts = [];
foreach ($parts as $part) {
$new_parts[] = str_replace(['https://', 'http://', $olddomain], ['https://', 'http://', $newdomain], $part);
}
$output = implode(",", $new_parts);
echo $output;
Return
https://stackoverflow.com, https://www.stackoverflow.com, https://subdomain.example.com
CodePudding user response:
With Array and Regex
$string = ' https://example.com, https://www.example.com, https://subdomain.example.com ';
$olddomain = ["example.com", 'www\.'];
$newdomain = ["stackoverflow.com", ''];
$output = preg_replace('#https://(' . implode('|', $olddomain) . ')#', 'https://' . $newdomain[0], $string);
$output = preg_replace('#(' . $olddomain[1] . ')#', $newdomain[1], $output);
echo $output;