我正在尝试使用parse_url从url获取主机。但是在某些查询中,我得到的结果是空的。这是我的功能:

function clean_url($urls){
    $good_url=array();
    for ($i=0;$i<count($urls);$i++){
        $url=parse_url($urls[$i]);

       //$temp_string=str_replace("http://", "", $urls[$i]);
       //$temp_string=str_replace("https://", "", $urls[$i]);
       //$temp_string=substr($temp_string, 0,stripos($temp_string,"/"));
       array_push($good_url, $url['host']);
    }
    return $good_url;
}

输入数组:
Array (
    [0] => https://en.wikipedia.org/wiki/Data
    [1] => data.gov.ua/
    [2] => e-data.gov.ua/
    [3] => e-data.gov.ua/transaction
    [4] => https://api.jquery.com/data/
    [5] => https://api.jquery.com/jquery.data/
    [6] => searchdatamanagement.techtarget.com/definition/data
    [7] => www.businessdictionary.com/definition/data.html
    [8] => https://data.world/
    [9] => https://en.oxforddictionaries.com/definition/data
)

结果数组为空结果
Array (
    [0] => en.wikipedia.org
    [1] =>
    [2] =>
    [3] =>
    [4] => api.jquery.com
    [5] => api.jquery.com
    [6] =>
    [7] =>
    [8] => data<
    [9] => en.oxforddictionaries.com
)

最佳答案

其中一些正在解析的$urls没有使parse_url将主机识别为路径的方案。

例如,解析URL data.gov.ua/data.gov.ua/返回为路径。添加方案例如https到该网址,因此https://data.gov.ua/将允许parse_urldata.gov.ua/识别为主机。

关于php - parse_url()PHP工作原理很奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41307354/

10-16 03:06