获取网址的中间部分

时间:2018-06-28 04:57:04

标签: php

我有几个网址,例如:

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];

但是,作为回报,我没有得到任何回应。网址也可以正确读取!

有人建议我在做什么错吗?

感谢您的答复!

2 个答案:

答案 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];
    }

?>