2012-04-02 3 views
4

j'ai obtenu un jeu de résultats au format tableau et je veux faire la valeur de support carré comme une clé et l'autre en tant que valeurchaîne Convertir en tableau en php

ici est mon code

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

Je veux une sortie comme: - array("name"=>"asdasdasd", "Email"=>"[email protected]");

comment puis-je faire en PHP toute aide serait grandement appréciée

Merci Jassi

+0

je veux convertir la chaîne en tableau avec la sortie suivante, pouvez-vous me dire comment cela est possible –

+0

Vous n'avez pas répondu à ma question. Qu'avez-vous essayé jusqu'à présent? Nous n'allons pas coder pour vous. –

+0

@ jassi9911 try 'preg_match_all()' – safarov

Répondre

2

Vous pouvez faire:

<?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" 
} 

Le regex est un peu plus compliqué à regarder, mais il correspond à peu près tout sauf [], permet des espaces i n la valeur et s'assure que le dernier caractère n'est pas [] ou un espace. Vous pourriez probablement sortir avec ([^\]\[\s]+) si vous saviez que vous n'alliez jamais avoir des espaces.

+1

thnx Aram c'est génial. –

0

Il ne sert à rien que quelqu'un vous donne le code exact, cela peut être fait avec quelques fonctions de base. Lisez sur certaines des fonctions suivantes et en tirer quelque chose pour vous-même, apprendre;)

Ou si vous vous sentez aventureux, il y a toujours: preg_match_all().

1

Vous pouvez adapter ce code ci-dessous pour la mise en forme exacte (de this article):

<?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); 

?> 

qui sera sortie:

Key1:Value1 # Key2:Value2 #