2012-04-02 21 views
4

bekam ich eine Ergebnismenge in Array-Format, und ich will eckige Klammer Wert als Schlüssel und der andere als ein WertConvert String Array in PHP

, hier ist mein Code

[Name]asdasdasd [Email][email protected] [Phone Number]42342342342 [Subject]dsafsdfsd [Company Name]ZXZXZX [Country]Antarctica 

ich möchte eine Ausgabe wie: - array("name"=>"asdasdasd", "Email"=>"[email protected]");

wie kann ich dies in PHP tun jede Hilfe sehr

Dank Jassi

geschätzt wäre
+0

Ich möchte String in Array mit der folgenden Ausgabe konvertieren, können Sie mir sagen, wie es möglich ist –

+0

Sie haben meine Frage nicht beantwortet. Was hast du bisher versucht? Wir werden nicht für Sie kodieren. –

+0

@ jassi9911 versuchen 'preg_match_all()' – safarov

Antwort

2

könnten Sie tun:

<?php 
$str = '[Name]asdasdasd [Email][email protected] [Phone Number]42342342342 [Subject]dsafsdfsd [Company Name]ZXZXZX [Country]Antarctica '; 

preg_match_all('#\[([^\]]+)\]\s*([^\]\[]*[^\]\[\s])#msi', $str, $matches); 

$keys = $matches[1]; 
$values = $matches[2]; 

// PHP 5 
var_dump(array_combine($keys, $values)); 
?> 

array(6) { 
    ["Name"]=> 
    string(9) "asdasdasd" 
    ["Email"]=> 
    string(13) "[email protected]" 
    ["Phone Number"]=> 
    string(11) "42342342342" 
    ["Subject"]=> 
    string(9) "dsafsdfsd" 
    ["Company Name"]=> 
    string(6) "ZXZXZX" 
    ["Country"]=> 
    string(10) "Antarctica" 
} 

Die regex sieht etwas komplizierter aus, aber es passt im Grunde alles außer [], erlaubt Whitespace i n der Wert und stellt sicher, dass das letzte Zeichen nicht [] oder Leerzeichen ist. Sie könnten wahrscheinlich mit ([^\]\[\s]+) davonkommen, wenn Sie wüssten, dass Sie nie Räume haben würden.

+1

Thnx Aram, das ist großartig. –

0

Es hat keinen Sinn, Ihnen den genauen Code zu geben, dies kann mit einigen Grundfunktionen geschehen. Lesen Sie auf einige der folgenden Funktionen und etwas Arbeit für sich selbst, lernen;)

Oder wenn Sie etwas Zeit mitbringen, gibt es immer: preg_match_all().

1

Sie diesen Code unten für Ihre genaue Formatierung (von this article) anpassen können:

<?php 

$assoc_array = array("Key1" => "Value1", "Key2" => "Value2"); 

$new_array = array_map(create_function('$key, $value', 'return $key.":".$value." # ";'), array_keys($assoc_array), array_values($assoc_array)); 

print implode($new_array); 

?> 

Welchen Ausgang:

Key1:Value1 # Key2:Value2 #