我有一个空格分隔的长字符串(从txt文件读入)
输入字符串:
$value = "TestNumber1 X Chan 1 Wrap Hi (5.0 V) (UNC) 9.860 V GELE (>= <=) 9.750 10.250 Passed"
我想要做的事情,并且已经成功完成,使用以下命令将此字符串分解为数组:
$Exploded = explode(" ",$value);
不幸的是,我还想在GELE(&gt; =&lt; =)部分和下面的数字(在这种情况下是9.750)之间分开,所以我想在我爆炸字符串之前让它变得容易我会这样做:
$value = str_replace("GELE (>= <=) ","GELE (>= <=) ",$value);
问题是,由于某种原因,替换不起作用。就好像它没有看到针头一样。这是我的分解字符串数组在执行str_replace之后给我的。
Array ( [0] => TestNumber1 X Chan 1 Wrap Hi (5.0 V) (UNC) [1] => 9.860 [2] => V [3] => GELE (>= <=) 9.750 [4] => 10.250 [5] => Passed [6] => )
如您所见,元素[3] =&gt; GELE(&gt; =&lt; =)9.750
我在做什么愚蠢让我的str_replace功能不起作用?
提前致谢。
答案 0 :(得分:0)
字符串后面的空格可能是制表符而不是空格。
首先尝试用空格替换标签\t
。
答案 1 :(得分:0)
尝试:
preg_replace('/GELE\s*?\(>= <=\)(\s+)[0-9\.]*/', ' ', $value);
答案 2 :(得分:0)
您还可以使用正则表达式来展开字符串,具体取决于您对数据的真正需求。
如果你想要像“9.860”,“9.750”和“10.250”这样的提取数字:
$iReg = preg_match("/^.*UNC\)[\s|\t]*([0-9\.]*).*<=\)[\s|\t]*([0-9\.]*)[\s|\t]*([0-9\.]*)[\s|\t]*(.*)/i", $sData, $aData);
echo "<p>iReg :".$iReg."</p>";
echo "<p><pre>".print_r($aData, true)."</pre></p>";
此代码返回此结果:
Array
(
[0] => TestNumber1 X Chan 1 Wrap Hi (5.0 V) (UNC) 9.860 V GELE (>= <=) 9.750 10.250 Passed
[1] => 9.860
[2] => 9.750
[3] => 10.250
[4] => Passed
)
希望这能帮到你......
阿卡