Конвертировать строку в массив в php - PullRequest
4 голосов
/ 02 апреля 2012

Я получил результирующий набор в формате массива, и я хочу сделать квадратную скобку в качестве ключа, а другую в качестве значения

вот мой код

[Name]asdasdasd [Email]dfgdfg@in.com [Phone Number]42342342342 [Subject]dsafsdfsd [Company Name]ZXZXZX [Country]Antarctica 

я хочувывод как: - array("name"=>"asdasdasd", "Email"=>"dfgdfg@in.com");

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

Спасибо Jassi

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

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

<?php
$str = '[Name]asdasdasd [Email]dfgdfg@in.com [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) "dfgdfg@in.com"
  ["Phone Number"]=>
  string(11) "42342342342"
  ["Subject"]=>
  string(9) "dsafsdfsd"
  ["Company Name"]=>
  string(6) "ZXZXZX"
  ["Country"]=>
  string(10) "Antarctica"
}

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

1 голос
/ 02 апреля 2012

Вы можете адаптировать этот код ниже для вашего точного форматирования (из этой статьи ):

<?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 #
0 голосов
/ 02 апреля 2012

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

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

...