2011-02-07 8 views
16

मैं इस तरह एक स्ट्रिंग है:पीएचपी कुंजी/मान जोड़े में विभाजित स्ट्रिंग

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

उपयोग कर सकते हैं आप regex का उपयोग कर कोई आपत्ति नहीं है ...

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

आपने मुझे उस – JPelletier

+0

पर हराया हालांकि ... ओपी उदाहरण में विस्फोट और लूप का उपयोग करके संभवतया रेसेक्स का उपयोग करने के लिए इसे अधिक कुशल साबित करने के लिए साबित होगा। –

+1

आप इसे कभी बेंचमार्क करने से पहले कभी नहीं जानते। यह उपयोग पैटर्न पर भारी निर्भर करता है। – etarion

11

अगर आप परिसीमक के रूप में & बजाय , उपयोग करने के लिए अपने स्ट्रिंग बदलने के लिए, आप parse_str()

+2

'parse_str' यूआरएल-डीकोड भी। – aaz

2

आप बदल सकते हैं , के बजाय के बजाय & का उपयोग करने के लिए स्ट्रिंग का प्रारूप, आप parse_str का उपयोग कर सकते हैं। दो पैरामीटर विकल्प का उपयोग करना सुनिश्चित करें।

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