-6

我有大量的服务器名称。有些名称包含 fqdn,有些则不包含。

单个字符串的列表如下所示:

  • 服务器A
  • 服务器A.something.com
  • 服务器A
  • 服务器B
  • 服务器B.something.com
  • 服务器C
  • serverD.something.com

我想分析一组像上面这样的单个字符串并返回 4 个结果:

  • 服务器A.something.com
  • 服务器B.something.com
  • 服务器C
  • serverD.something.com

本质上,如果我有多个服务器条目,我想保留较长的条目(包括 fqdn)。如果服务器的条目不包含 fqdn,我只想保留服务器名称。我不希望我的结果集中有任何重复项。任何建议都会被采纳。

4

2 回答 2

0

我想您将列表作为 PHP 中的值数组。你如何解决它是通过使用rsort。第一个元素是一个 kepper,然后在累加器中删除最后一个元素之后的每个元素。要按字母顺序获取它,您可以在通过 array_reduce 运行它之后对结果进行排序。

于 2013-06-11T23:08:12.750 回答
0

试一试,对我有用

<?php
$test = array();
$test[]="serverA";
$test[]="serverA.something.com";
$test[]="serverA";
$test[]="serverB";
$test[]="serverB.something.com";
$test[]="serverC";
$test[]="serverD.something.com";
sort($test);
$final = array();
$temp = "#";
for($i=0,$count = count($test);$i<$count;$i++){
    if(substr( $test[$i], 0, strlen($temp) ) == $temp)
        $temp = $test[$i];
    else {
    $final[] = $temp;
    $temp = $test[$i];
    }
}
//unset first 
unset($final[0]);
//add in last
$final[] = $temp;
var_dump($final);
?>

给我这个

array
  1 => string 'serverA.something.com' (length=21)
  2 => string 'serverB.something.com' (length=21)
  3 => string 'serverC' (length=7)
  4 => string 'serverD.something.com' (length=21)
于 2013-06-11T23:08:21.030 回答