2011-02-07 10 views
16

私はこのような文字列を持っています:PHPキー/値のペアでの分割文字列

array(
    "key" => "value", 
    "key2" => "value2" 
) 

私は

$parts = explode(",", $string) 
$parts = array_map("trim", $parts); 
foreach($parts as $currentPart) 
{ 
    list($key, $value) = explode("=", $currentPart); 
    $keyValues[$key] = $value; 
} 
のような何かを行うことができます

しかしこれは面白そうだ。これをPHPでよりスマートに行うには、何らかの方法が必要ですか?

+0

あなたのデータはどこから来たのですか?あなたはそれがどのように格納されるかを制御しますか?人間が読める形式(書込み可能な形式)になっていますか? –

答えて

18

を使用することができますがURLクエリ文字列に一致する文字列の形式(,の代わりにを使用するなど、parse_strを使用できます)

+0

あなたはそれに私を打つ – JPelletier

+0

... OPの例のようにexplodeとloopを使うと、正規表現を解析するよりも効率が上がるでしょう。 –

+1

ベンチマークする前にそれを知ることは決してありません。これは、使用パターンに大きく依存します。 – etarion

11

あなたは区切り文字として&の代わり,を使用するように文字列を変更する場合は、正規表現を使用して気にしない場合は、変更することができる場合、あなたは...

$str = "key=value, key2=value2"; 
preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r); 
$result = array_combine($r[1], $r[2]); 
var_dump($result); 
+2

'parse_str'もURLデコードします。 – aaz

13
<?php parse_str(str_replace(", ", "&", "key=value, key2=value2"), $array); ?>