我有一堆这样的网址。
$urls = array(
'https://site1.com',
'https://www.site2.com',
'http://www.site3.com',
'https://site4.com',
'site5.com',
'www.site6.com',
'www.site7.co.uk',
'site8.tk'
);
我想删除 http、https、://和 www。从这些字符串,以便输出看起来像这些。
$urls = array(
'site1.com',
'site2.com',
'site3.com',
'site4.com',
'site5.com',
'site6.com',
'site7.co.uk',
'site8.tk'
);
我想出了这个解决方案。
foreach ($urls as $url) {
$pattern = '/(http[s]?:\/\/)?(www\.)?/i';
$replace = "";
echo "before: $url after: ".preg_replace('/\/$/', '', preg_replace($pattern, $replace, $url))."\n";
}
我想知道如何避免第二个 preg_replace。有任何想法吗?
最佳答案
preg_replace 也可以采用数组,因此您甚至不需要循环。你可以用一个衬垫来做到这一点:
$urls = preg_replace('/(?:https?:\/\/)?(?:www\.)?(.*)\/?$/i', '$1', $urls);
关于php - 用于从 URL 中删除 http ://and www. 的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6738752/