0
$multi = $_Post['multi_links'];
$links = explode("\n", $multi);
for ($i = 0; $i < count($links); $i++) 
{ 
$link=$links[$i]; 
$host = array_shift( explode( '.', str_replace('www.', '', parse_url($link,   PHP_URL_HOST))));
 ... 
}

如果链接包含相同的主机,我应该在(...)中写什么来重新组织链接,谢谢...这里有一个例子:if $multi="a.com/abc b.com/toto a.com/def b .com/cc b.com/ccc”我在每个链接中得到以下内容:
主机'a.com'的链接='a.com/abc | a.com/def' 主机 'b.com' 的链接 = 'b.com/toto | b.com/cc | b.com/ccc'

4

3 回答 3

0

根据您所描述的,您只需要一个按 abc 对链接进行排序的函数。

function just_host($link)
{
return array_shift( explode( '.', str_replace('www.', '', parse_url($link,   PHP_URL_HOST))));
}

$multi = $_POST['multi_links']; //$_Post is not right , all upper-case!
$links = explode("\n", $multi);
$links = array_map($links , 'just_host'); //Call the 'just_host' for every link and update the value in the array.
sort($links); //Sort the array
foreach($links as $link) //Instead of 'for' , use 'foreach'
{ 
echo $link . "<br />";
}

应该工作,如果没有,请更新我,我会编辑它。

于 2013-08-13T11:31:09.477 回答
0
$multi = $_Post['multi_links'];
$links = explode("\n", $multi);
$hname = array();

for ($i = 0; $i < count($links); $i++) 
{ 
$link=$links[$i]; 
$host = array_shift( explode( '.', str_replace('www.', '', parse_url($link,   PHP_URL_HOST))));

$exh = explode('/', $host);
if (array_key_exists($exh[0], $hname))
{
   array_push($hname[$exh[0]], exh[1]);  
}
else
{
  $hname[$exh[0]] = array();
}

}

关联数组在哪里$hname,其中键是域,值是其余链接的数组。

于 2013-08-13T11:33:38.653 回答
0
$multi = "http://a.com/abc
    http://b.com/toto
    http://a.com/def
    http://b.com/cc
    http://b.com/ccc";
$links = explode("\n", $multi);
//remove white spaces (trimming)
$links = array_filter(array_map('trim', $links));
//unique hosts
$hosts = array();
foreach($links as $link){
    $parsed_url = parse_url($link);
    $hosts[] = $parsed_url['host'];
}
//filter only the unique host names
$unique_host = array_unique($hosts);

//group links
$group = array();
foreach($unique_host as $u_h){
    $group[$u_h]=array();
    foreach($links as $link){
        $parsed_url=parse_url($link);
        if(strcasecmp($parsed_url['host'],$u_h) == 0){
            $group[$u_h][] = $link;
        }
    }
}
print_r($group);
于 2013-08-13T11:42:13.900 回答