如何获得没有模式且以 php 结尾的 URL 的主机?
How can I get an URL's host without schema and ending in php?
我要爆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()
expects parameter 2 to be string, array given" 错误消息。
用这个方法:
$host = var_dump(parse_url($_POST['link'], PHP_URL_HOST));
我得到 www.youtube.com
但我只想要 youtube
.
- 使用模式
PHP_URL_HOST
的 parse_url()
函数提取 url 域。
- 我们将使用
explode()
函数将其拆分为多个部分,使用 .
作为分隔符。
- 现在,URL可以有两种类型,要么是
youtube.com
,要么是www.youtube.com
,要么是%.youtube.com
- 我们计算零件,如果它们是两个,我们使用第一个值,否则使用第二个值。
$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];
没有任何 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
您可以在 preg_match()
中使用正则表达式来完成这项工作。
$url = "https://www.youtube.com/watch?v=udm5jUA-2bs";
preg_match("/(\w+)(?=\.\w{2,}(\/|\?|$))/", $url, $matches);
echo $matches[1]; // youtube
检查结果 demo
我要爆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()
expects parameter 2 to be string, array given" 错误消息。
用这个方法:
$host = var_dump(parse_url($_POST['link'], PHP_URL_HOST));
我得到 www.youtube.com
但我只想要 youtube
.
- 使用模式
PHP_URL_HOST
的parse_url()
函数提取 url 域。 - 我们将使用
explode()
函数将其拆分为多个部分,使用.
作为分隔符。 - 现在,URL可以有两种类型,要么是
youtube.com
,要么是www.youtube.com
,要么是%.youtube.com
- 我们计算零件,如果它们是两个,我们使用第一个值,否则使用第二个值。
$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];
没有任何 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
您可以在 preg_match()
中使用正则表达式来完成这项工作。
$url = "https://www.youtube.com/watch?v=udm5jUA-2bs";
preg_match("/(\w+)(?=\.\w{2,}(\/|\?|$))/", $url, $matches);
echo $matches[1]; // youtube
检查结果 demo