2012-03-02 171 views
2

我想分表的字符串,我需要的是如何分割字符串,字符和数字

输出:

// First Output 
$name ='aaaa'; 
$first='DUT.A1'; 
$second='E3.3 H2.3 Y3.333 h88.h fdfd.87'; 
$third ='J66.H3'; 

// SecondOutput 
$name ='bbbb'; 
$first='DUT.A2'; 
$second='F2.2 F3.1 Y1.1'; 
$third ='J30.A1'; 

输入:

$a = "aaaa ; DUT.A1 E3.3 H2.3 Y3.333 h88.h fdfd.87 J66.H3"; 
$b = "bbbb ; DUT.A2 F2.2 F3.1 Y1.1 J30.A1"; 
$c = "cccc ; DUT.A3 H2.3 Y3.333 h88.h Y1.1 J45.G2"; 

一个使用爆炸功能将变量分为

$exp = explode(";",$a); 
$name = $exp[0]; 
$x = $exp[1]; 
$x1 = explode(" ",$x); 
$total = count($x1); 
$first = $x1[1]; 
$loop_end = $total-2; 

for($i=2;$i<=$loop_end;$i++) { 
    $second .= $x1[$i].""; 
} 
$third = $x1[$total-1] 

;

用于显示以上输出。

,如果我给,

$var = "haha ; J1.A1 DUT.A1 DUT.A2 C1.1 C2.1 , 
       F2.1 F4.1 K1.1 , 
       F2.1 F4.1 K1.1 , 
       F2.1 F4.1 K1.1 "; 

我想分号之前的名字一样DUT.xx作为第一个String(不包含空格前。DUT.A1 DUT.A2) 的性格与J开头和后的数值就存储在第三个(例如J1.A1作为第三个 而不是J后的字符)。存储余额的字符变量二,如(前。

$second = 'C1.1 C2.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1'; 

+4

首先,花了我5分钟来重新格式化您的问题。请使用编辑器中的“代码”按钮,而不是HTML代码。其次,请重新提出这个问题。很难理解你究竟在问什么。 – mingos 2012-03-02 14:05:10

回答

2

这是所需的输出?

$arr = array(
    "aaaa ; DUT.A1 E3.3 H2.3 Y3.333 h88.h fdfd.87 J66.H3", 
    "bbbb ; DUT.A2 F2.2 F3.1 Y1.1 J30.A1", 
    "cccc ; DUT.A3 H2.3 Y3.333 h88.h Y1.1 J45.G2", 
    "haha ; J1.A1 J1.A2 DUT.A1 DUT.A2 C1.1 C2.1 ,F2.1 F4.1 K1.1 ,F2.1 F4.1 K1.1 ,F2.1 F4.1 K1.1 "); 


foreach ($arr as $item) { 
    echo "<b>item</b> = $item<hr/>"; 
    $parts = preg_split('/\s*;\s*/',$item); 

    $name = $parts[0]; 
    $first = array(); 
    $second = array(); 
    $third = array(); 

    $split = preg_split('/\s*,\s*/',$parts[1]); 

    foreach ($split as $values) { 
     preg_match_all('/\b[\w\d]+\.[\d\w]+\b/',$values,$value); 
     $sec = array(); 
     foreach ($value[0] as $item) { 
      preg_match('/^DUT\./',$item,$match); 
      if (!empty($match[0])) { 
       $first[] = $item; continue; 
      } 
      preg_match('/^J\d+\./',$item,$match); 
      if (!empty($match[0])) { 
       $third[] = $item; continue; 
      } 
      $sec[] = $item; 
     } 
     $second[] = implode(' ', $sec); 
    } 

    $first = implode(' ', $first); 
    $second = implode(',', $second); 
    $third = implode(' ', $third); 

    echo 'name = ' . $name . "\n"; 
    echo 'first = ' . $first . "\n"; 
    echo 'second = ' . $second . "\n"; 
    echo 'third = ' . $third . "\n\n"; 

} 

= AAAA; DUT.A1 E3.3 H2.3 Y3.333 h88.h fdfd.87 J66.H3


name = aaaa
first = DUT.A1
second = E3.3 H2.3 Y3.333 h88.h fdfd。 87
third = J66.H3

item = bbbb; DUT.A2 F2.2 F3.1 Y1.1 J30.A1


名称= BBBB
第一= DUT.A2
秒= F2.2 F3.1 Y1.1
第三= J30.A1

item = cccc; DUT.A3 H2.3 Y3.333 h88.h Y1.1 J45.G2


name = cccc
first = DUT.A3
second = H2.3 Y3.333 h88.h Y1.1
third = J45。 G2

item = haha​​; J1.A1 J1.A2 DUT.A1 DUT.A2 C1.1 C2.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1


name = haha​​
first = DUT.A1 DUT.A2
second = C1.1 C2.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1
third = J1.A1 J1.A2

+0

感谢它的工作 – satheesh 2012-03-02 16:29:13