I have a bunch of urls like these.
$urls = array(
\'https://site1.com\',
\'https://www.site2.com\',
\'http://www.site3.com\',
\'https://sit
preg_replace can also take an array, so you don't even need the loop. You can do this with a one liner:
$urls = preg_replace('/(?:https?:\/\/)?(?:www\.)?(.*)\/?$/i', '$1', $urls);
Short and sweet:
$urls = preg_replace('~^(?:https?://)?(?:www[.])?~i', '', $urls);
Depending on what exactly it is you want to do, it might be better to stick with PHP's own URL parsing facilities, namely parse_url:
foreach ($urls as &$url) {
$url = preg_replace('~^www.~', '', parse_url($url, PHP_URL_HOST));
}
unset($url);
parse_url
will give you the host of the URL, even if it will contain a port number or HTTP authentication data. (Whether this is what you need, depends on your exact use case though.)
/^(https?:\/\/)?(www\.)?(.*)\/$/i
And use what's on $3
. Or, even better, change the first two parentheses to the non-capturing version (?:)
and use what's on 1.