在PHP中将字符串转换为数组

4
我得到了一个数组格式的结果集,我想将方括号值作为键,另一个值作为值。
这是我的代码:
[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。

我想将字符串转换为数组,并得到以下输出,请问如何实现? - Jassi Oberoi
你没有回答我的问题。你到目前为止尝试了什么?我们不会替你编写代码。 - Madara's Ghost
@jassi9911 尝试使用 preg_match_all() - safarov
我尝试使用explode函数,但没有得到我想要的完全输出。 - Jassi Oberoi
你从哪里得到这样的字符串? - Your Common Sense
3个回答

2

您可以这样做:

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

你可以根据你的具体格式要求,调整下面的代码(来自这篇文章):

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

别人给你完整代码也没有什么意义,这些都可以用一些基本函数完成。阅读以下函数的介绍并自己动手尝试,学习吧 ;)

或者如果你想要冒险,还有:preg_match_all()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接