我有几个网址,例如:
http://stackoverflow.com
https://google.com
facebook.com
cnn.com/
https://help.uber.com/
我只想获取中间部分的每个网址,例如:
facebook, cnn, uber, stackoverflow, google
。
我尝试了以下操作,其中$line
是网址:
$parts = parse_url($line);
$path_parts = explode('/', $parts['path']);
echo $path_parts[count($path_parts)-1];
但是,作为回报,我没有得到任何回应。网址也可以正确读取!
有人建议我在做什么错吗?
感谢您的答复!
答案 0 :(得分:3)
尝试像这样使用host
。如果您提供的网址像cnn.com
parse_url一样进行解析,并将其存储在路径索引中。
<?php
$line='https://help.uber.com/';
$parts = parse_url($line);
$path_parts = explode('.', isset($parts['host'])?$parts['host']:$parts['path']);
echo $path_parts[count($path_parts)-2];
?>
答案 1 :(得分:1)
您必须先获取详细信息,然后使用preg_match获取格式。检查下面的代码,您将获得所需的输出。
<?php
$line = "stackoverflow.com" ;
$parts = parse_url($line);
$domain_name = isset($parts['host']) ? $parts['host'] : $parts['path'];
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain_name, $dom)){
$d_name = explode(".", $dom['domain']) ;
echo $d_name[0];
}
?>