2011-04-19 63 views
0

我有一个有趣的难题要解决。我们使用PHP找到替换命令PHP搜索取代有趣的任务

from: 
$string = ' 
h= 1.00    h= 2.00 h= 3.50 
W= 1.50    w= 3.00 w= 4.50 
st=5000    st=6000 st=7000 
'; 

to: 
$string = ' 
A=1.00, B=2.00, C=3.50 
A=1.50, B=3.00, C=4.50 
A=5000, B=6000, C=7000 
'; 

意味着很好地格式化的字符串数据并且有时列只有2个,但有时然后列是3,4,5或甚至10

以下变量转换

我需要PHP来为我做这件事,但我不知道什么代码会对它有好处。

可能是preg_replace可能会有帮助,但我不确定。

感谢提前的帮助......

+0

听起来像家庭作业......但'preg_replace'是我会用。 – 2011-04-19 01:38:22

+0

他们都是整数吗? – Version1 2011-04-19 01:39:33

+0

前两行是高度和宽度,第三行是针数。 – Haider 2011-04-19 01:41:39

回答

0

你可以使用喜欢的东西简单化:

preg_match_all('/\w+=\s*([\d.]+).+\w+=\s*([\d.]+).+\w+=\s*([\d.]+)/', 
    $input, $values, PREG_SET_ORDER); 
print_r($values); 

这将提取数据线明智:

[0] => Array 
    (
     [0] => h= 1.00    h= 2.00 h= 3.50 
     [1] => 1.00 
     [2] => 2.00 
     [3] => 3.50 
    ) 

,然后易于重新格式化和重命名。

foreach ($values as $row) { 
    array_shift($row); 
    $output .= "A=$row[0], B=$row[1], C=$row[2]\n"; 
} 
+0

伟大的它几乎工作,但我怎么能分开所有三行像$ line1 =高度变量的行; $ line2 =带宽变量的行等 – Haider 2011-04-19 02:10:16

+0

你已经有了它们在一个数组中。重新解释你想要的。 – mario 2011-04-19 02:19:27