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.H3name=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";
}