在PHP中合并几个字符串

时间:2013-06-11 22:17:17

标签: php regex

我有一大堆服务器名称。有些名字包含fqdn,有些则没有。

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

  • serverA的
  • serverA.something.com
  • serverA的
  • serverB上
  • serverB.something.com
  • 服务器C
  • serverD.something.com

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

  • serverA.something.com
  • serverB.something.com
  • 服务器C
  • serverD.something.com

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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)