【问题标题】:Convert string to array in php在php中将字符串转换为数组
【发布时间】:2012-04-16 02:26:11
【问题描述】:

我得到一个数组格式的结果集,我想将方括号值作为键,另一个作为值

这是我的代码

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

我想要像这样的输出:- array("name"=>"asdasdasd", "Email"=>"dfgdfg@in.com");

我如何在 PHP 中做到这一点,任何帮助将不胜感激

谢谢贾西

【问题讨论】:

  • 我想将字符串转换为数组,输出如下,你能告诉我怎么可能
  • 你没有回答我的问题。你都尝试了些什么?我们不会为您编写代码。
  • @jassi9911 试试preg_match_all()
  • 我尝试使用爆炸功能,但没有得到我想要的确切输出。
  • 你从哪里得到这样的字符串?

标签: php arrays resultset


【解决方案1】:

你可以这样做:

<?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]+)

【讨论】:

    【解决方案2】:

    您可以根据您的确切格式调整以下代码(来自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 #
    

    【讨论】:

      【解决方案3】:

      别人给你确切的代码是没有意义的,这可以通过一些基本的功能来完成。阅读以下一些功能并为自己解决一些问题,学习;)

      或者,如果您喜欢冒险,总有:preg_match_all()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 2018-01-29
        • 2013-08-12
        • 2021-12-27
        • 1970-01-01
        相关资源
        最近更新 更多