【问题标题】:Convert plain text to array将纯文本转换为数组
【发布时间】:2012-04-20 20:27:24
【问题描述】:

如果我从 mysql(或其他)获得以下文本字符串,如何使用 PHP 将其转换为实际数组?

array("foo" => "bar","honey" => "pops")

我知道我可以将数组保存为序列化状态,但这正是我在这里要避免的。

【问题讨论】:

  • 你可以eval()它,但只能在极度谨慎的情况下这样做。
  • 从不将 PHP 代码放入数据库中。使用 JSON 或序列化对象(为什么要避免这种情况?)。
  • rocket 是对的,eval 是邪恶的 :]

标签: php


【解决方案1】:

答案是“不要这样做”。 永远不要将 PHP 代码放入您的数据库中。数据库用于数据,而不是代码。

正确的方法是存储一个序列化数组(不知道为什么要避免这种情况)。

【讨论】:

  • @dqhendricks:我同意,但我不知道这些数据来自哪里,所以我现在建议这样做。
  • @dqhendricks 我想避免存储序列化数据的唯一原因是为了方便(普通数组更容易编写),但这显然不值得。并且使用多个表来存储相关数据对于这个项目来说绝对有利可图,而且我可以想到许多其他情况也会出现这种情况。
  • @natli:你可以写 JSON,这很简单 :-)
  • @dqhendricks 是的,我明白了,但这甚至不是我在这里所做的。序列化的数组被发送到 C# 套接字服务器,该服务器将根据所述数组中的内容执行代码,并将结果回传给 PHP。然后将这些结果放回数据库中,请求数据的人(不是我)知道如何处理这些数据。发送到服务器的序列化数组中的数据在创建后永远不需要访问。你真的认为为每个可能计划发送到套接字服务器的元素创建一个新的 mysql 字段是明智的吗? >.
  • @natli:在你的情况下,在数据库中保存序列化数组(或 JSON)似乎是要走的路。
【解决方案2】:

使用eval,但这太危险了.... 我不建议你使用这样的

$string = '$array = array("foo" => "bar","honey" => "pops");' ;
eval($string);
var_dump($array);

输出

array(2) {
    ["foo"]=>
    string(3) "bar"
    ["honey"]=>
    string(4) "pops"
}

推荐

使用标准格式,例如

JSONhttp://php.net/manual/en/book.json.php

XMLhttp://php.net/manual/en/book.simplexml.php

Serialized PHPhttp://php.net/manual/en/function.serialize.php

【讨论】:

    【解决方案3】:

    你可以使用eval函数:

    http://php.net/manual/en/function.eval.php

    试试这样的:

    $my_string = 'array("foo" => "bar","honey" => "pops")';
    
    eval("\$result=$my_string;");
    

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 1970-01-01
      • 2012-04-12
      • 2014-09-08
      • 2020-08-27
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多