2012-04-02 67 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

我想将字符串转换为具有以下输出的数组,你能告诉我怎么可能 – 2012-04-02 12:19:04

+0

你没有回答我的问题。你试过什么了?我们不会为你编码。 – 2012-04-02 12:21:24

+0

@ jassi9911尝试'preg_match_all()' – safarov 2012-04-02 12:22:37

回答

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亚伦这真棒。 – 2012-04-02 12:35:50

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 #