Php str_replace无法正常工作

时间:2011-03-07 12:04:14

标签: php string replace space delimited

我有一个空格分隔的长字符串(从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功能不起作用?

提前致谢。

3 个答案:

答案 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
)

希望这能帮到你......

阿卡