Php 如何用字符和数字分隔字符串

Php 如何用字符和数字分隔字符串,php,string,explode,Php,String,Explode,我想在表中划分字符串,我的需要是 输出: // 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

我想在表中划分字符串,我的需要是

输出:

// 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";
使用explode函数分割变量,如

$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]
我想在分号之前加上名称,像DUT.xx这样的字符串作为第一个(不包括空格,例如DUT.A1 DUT.A2) 字符以J开头,数字值之后存储在第三个字符中(例如,J1.A1作为第三个字符) 而不是字符后的J)。存储在变量Second中的平衡字符,如(例如


)这是期望的输出吗

$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";

}
$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”,
“哈哈;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、F2.1 F4.1 K1.1”);
foreach($arr作为$item){
echo“item=$item
”; $parts=preg_split('/\s*;\s*/',$item); $name=$parts[0]; $first=array(); $second=array(); $third=array(); $split=preg_split('/\s*,\s*/',$parts[1]); foreach($拆分为$值){ preg\u match\u all('/\b[\w\d]+\.[\d\w]+\b/',$values,$value); $sec=array(); foreach($value[0]作为$item){ 预匹配(“/^DUT\./”,$item,$match); 如果(!empty($match[0])){ $first[]=$item;继续; } 预匹配(“/^J\d+\./”,$item,$match); 如果(!empty($match[0])){ $third[]=$item;继续; } $sec[]=$item; } $second[]=内爆(“”,$sec); } $first=内爆(“”,$first); $second=内爆(“,”,$second); $third=内爆(“”,$third); echo“name=”.$name.“\n”; 回显“first=”.$first.“\n”; 回显“秒=”。$second。“\n”; 回显“third=”。$third。“\n\n”; }
项目=aaaa;DUT.A1 E3.3 H2.3 Y3.333 h88.h FDFDFD.87 J66.H3
name=aaaa
第一个=DUT.A1
第二个=E3.3 H2.3 Y3.333 h88.h fdfd.87
third=J66.H3

项目=bbbb;DUT.A2 F2.2 F3.1 Y1.1 J30.A1
名称= bbbb
第一个=被测件A2
第二个=F2.2 F3.1 Y1.1
第三个= J30.A1

项目=中国交建;DUT.A3 H2.3 Y3.333 h88.h Y1.1 J45.G2
名称= cccc
第一个=DUT.A3
第二个=H2.3 Y3.333 h88.h Y1.1
第三个=J45.G2

项目=哈哈;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
首先= 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
第三个=J1.A1 J1.A2


首先,我花了5分钟重新编排你的问题。请使用编辑器中的
code
按钮,而不是HTML代码。第二,请重新措辞这个问题。很难理解你到底在问什么。
$second =  'C1.1 C2.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1,F2.1 F4.1 K1.1';
$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";

}