2012-04-02 4 views
4

я получил результат установлен в виде массива, и я хочу, чтобы сделать квадрат значение кронштейн в качестве ключа и другой в качестве значенияПреобразование строки в массив в PHP

вот мой код

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

я хочу выход, как: - array("name"=>"asdasdasd", "Email"=>"[email protected]");

, как я могу это сделать в PHP любая помощь будет принята с благодарностью

Благодаря Jassi

+0

Я хочу преобразовать строку в массив со следующим выходом, не могли бы вы рассказать мне, как это возможно? –

+0

Вы не ответили на мой вопрос. что ты уже испробовал? Мы не собираемся кодировать вас. –

+0

@ jassi9911 try 'preg_match_all()' – safarov

ответ

2

Вы можете сделать:

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

регулярное выражение немного сложнее, но в основном соответствует чему-либо, кроме [], допускает пробелы i n значение и убедитесь, что последний символ не [] или пробел. Вы могли бы уйти с ([^\]\[\s]+), если бы знали, что у вас никогда не будет пробелов.

+1

thnx Aram это потрясающе. –

0

Нет никакого смысла в том, чтобы кто-то дал вам точный код, это можно сделать с помощью некоторых основных функций. Читайте на некоторые из следующих функций и работать что-то для себя, узнать,)

Или, если вы чувствуете приключений, всегда есть: preg_match_all().

1

Вы можете адаптировать этот код ниже для точного форматирования (от 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); 

?> 

Какой будет выход:

Key1:Value1 # Key2:Value2 # 
Смежные вопросы