Как я могу получить URL хоста без схемы и заканчивая php? - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу взорвать URL, чтобы получить хост.

$link = str_replace("www.", "", $_POST['link']);
$part1 = explode("//", $link);
$part2 = explode(".", $part1[1]);
$host = $part2[0];

Так что, если $_POST['link'], например,

https://www.youtube.com/watch?v=udm5jUA-2bs 

Я хочу получить только youtube. В этом первом способе я получаю explode() ожидает, что параметр 2 будет строкой, массивом дано сообщение об ошибке.

С помощью этого метода:

$host = var_dump(parse_url($_POST['link'], PHP_URL_HOST));

Я получаю www.youtube.com, но я хочу только youtube.

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

что по этому поводу без regex?Вы можете использовать parse_url() и explode(), чтобы получить то, что вы хотите, то есть YouTube

<?php
$url = 'https://www.youtube.com/watch?v=udm5jUA-2bs';
$parse = parse_url($url);
//print_r($parse);
echo explode('.',$parse['host'])[1];
?>

Выход:

 youtube

ДЕМО: https://3v4l.org/kG1nD

0 голосов
/ 11 ноября 2018

Вы можете использовать регулярное выражение в preg_match(), чтобы сделать эту работу.

$url = "https://www.youtube.com/watch?v=udm5jUA-2bs";
preg_match("/(\w+)(?=\.\w{2,}(\/|\?|$))/", $url, $matches);
echo $matches[1]; // youtube

Результат проверки в демо

0 голосов
/ 11 ноября 2018
  • Извлечение домена URL с помощью функции parse_url() с режимом PHP_URL_HOST.
  • Мы будем использовать функцию explode(), чтобы разбить ее на части, используя . в качестве разделителя.
  • Теперь URL может быть двух типов: либо youtube.com, либо www.youtube.com, либо %.youtube.com
  • Мы считаем части, и если их две, мы используем первое значение, иначе второе значение.

Попробуйте ( ДЕМО: https://3v4l.org/KlErW)

$url_host_parts = explode('.', parse_url($_POST['link'], PHP_URL_HOST));
$host = (count($url_host_parts) == 2) ? $url_host_parts[0] : $url_host_parts[1];
...