za4me
@za4me
Человек

Не учитывать www. в регулярке?

Добрый день, есть регулярка:

$str = 'http://example.com/go/d5863567e7544ae94c5c9342837dbbf8';
$str2 = 'http://www.example.com/go/d5863567e7544ae94c5c9342837dbbf8';

preg_match('/(?<=\/\/).*?(?=\/)/', $str2, $arr);
print_r($arr);


Выводит "www.example.com"
Каким образом ее модифицировать что-бы выводила только "example.com" учитывая то что www. может и не быть в строке.

Всем спасибо.
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
<?php

function extract_host($url)
{
  if (preg_match('~^https?://(?:www\.)?([^/]+)~', $url, $m)) {
    return $m[1];
  }

  return null;
}

var_dump(extract_host('http://example.com/go/d5863567e7544ae94c5c9342837dbbf8'));
var_dump(extract_host('http://www.example.com/go/d5863567e7544ae94c5c9342837dbbf8'));


string(11) "example.com"
string(11) "example.com"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@XenK
(?<=\/\/)(?!www).*?(?=\/)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы