2011-04-19 12 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