8

このような複数行の文字列を爆発させたい

color:red
material:metal

このような配列に

$array['color']=red
$array['material']=metal

何か案が?

4

3 に答える 3

16

正規表現を使用できますが、オーバーヘッドがなくても十分に単純です。

$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( )を使用すると、regexp を使用した代替が非常に快適になります。

$matches = array();
preg_match_all('/^(.+?):(.+)$/m', $dataString, $matches);
$data = array_combine($matches[1], $matches[2]);
于 2010-12-02T14:23:57.587 に答える
2

これを試して

$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);
于 2013-04-08T10:54:38.603 に答える
1

改行で最初に爆発します。プロリー\n

次に、結果の配列の各項目を : で展開し、新しい配列をそのキー/値に設定します。

于 2010-12-02T14:24:00.123 に答える