我有一堆这样的网址。

  $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/

10-10 18:25
查看更多