我想多行字符串這樣爆炸在陣列的兩個項目列表密鑰=>值
color:red
material:metal
爆炸到陣列這樣
$array['color']=red
$array['material']=metal
任何理念?
我想多行字符串這樣爆炸在陣列的兩個項目列表密鑰=>值
color:red
material:metal
爆炸到陣列這樣
$array['color']=red
$array['material']=metal
任何理念?
使用explode(),你可以使用它的正則表達式,但它很簡單,沒有開銷。
$data = array();
foreach (explode("\n", $dataString) as $cLine) {
list ($cKey, $cValue) = explode(':', $cLine, 2);
$data[$cKey] = $cValue;
}
正如評論所說,如果數據從一個Windows/DOS環境下很可能有CRLF換行符的到來,加上之前foreach()
以下行會解決這個問題。
$dataString = str_replace("\r", "", $dataString); // remove possible \r characters
用正則表達式的替代可以用preg_match_all()和array_combine()是很愉快:
$matches = array();
preg_match_all('/^(.+?):(.+)$/m', $dataString, $matches);
$data = array_combine($matches[1], $matches[2]);
不要忘記至少從`$ cValue`去掉可能的`「\ r」`。 – Jon 2010-12-02 14:32:25
第一爆炸的換行符。 Prolly \ n
然後展開每個結果數組的項目:並將一個新數組設置爲該鍵/值。
試試這個
$value = '1|a,2|b,3|c,4|d';
$temp = explode (',',$value);
foreach ($temp as $pair)
{
list ($k,$v) = explode ('|',$pair);
$pairs[$k] = $v;
}
print_r($pairs);
你有什麼? – SilentGhost 2010-12-02 14:22:07