Как разобрать ссылку только для реального домена, а не для www? - PullRequest
1 голос
/ 15 октября 2019

Я использую PHP url. Parse ниже - это код, который я использую

$parse = (object)parse_url($arr[1]);
            if(!property_exists($parse, 'host') || $parse->host === "") {
                return;
            }

В приведенном выше коде, например, если я буду кормить ниже ссылку

https://www.forbes.com/sites/johnkoetsier/2019/07/17

Приведенный выше код возвращает «www.forbes.com», но мне нужно только «forbes.com», как мне этого добиться.

Ответы [ 2 ]

2 голосов
/ 15 октября 2019
$parse = (object)parse_url($arr[1]);
if(!property_exists($parse, 'host') || $parse->host === "") {
    return;
}else{
    if(stripos($parse->host, 'www.') === 0){
        $parse->host = substr($parse->host, strlen('www.'));
    }
}

Вы можете использовать stripos , чтобы проверить, являются ли первые буквы www. затем удалить его с помощью substr .

1 голос
/ 15 октября 2019
    $input = 'www.google.co.uk/';

    // in case scheme relative URI is passed, e.g., //www.google.com/
     $input = trim($input, '/');

   // If scheme not included, prepend it
     if (!preg_match('#^http(s)?://#', $input)) {
      $input = 'http://' . $input;
     }

     $urlParts = parse_url($input);

  // remove www
    $domain = preg_replace('/^www\./', '', $urlParts['host']);

  echo $domain;

 // output: google.co.uk
...