如何从大括号中获取字符串?

时间:2011-12-11 16:41:16

标签: php arrays string

我需要帮助: 我有一个数组,我需要从中获取值...但是如何获取大括号内的数据......

它应该是简单的东西,我想...我试过爆炸,这显然无法工作,例如在最后一个大括号中有两种数据,应该区分为......每个花括号(数据适用于某些事情。)

$array = array(
  "other" => "{name:2},{value:2},{align:4},{height:4, color:red}",
  "another" => "{name:2},{value:2},{align:4},{height:4, color:red}"
);

我真的很挣扎......并感谢你的帮助。 感谢

3 个答案:

答案 0 :(得分:4)

preg_match_all('/\{([^}]*)\}/', $str, $matches);
foreach($matches[1] as $match)
{
    $pieces = explode(',', $match);
    foreach($pieces as $pair)
    {
        list($key, $value) = explode(':', trim($pair));
        // do something with $key and $value
    }
}

答案 1 :(得分:2)

试试这个,然后阅读json_decodejson_encode个功能

$result = json_decode('['.$array['other'].']', true);

<强>更新

尝试此操作后,我注意到你的字符串不是一个有效的JSON,所以我的答案不是一个好的解决方案,除非你能得到{“key”:“value”}格式

答案 2 :(得分:2)

相反,我认为爆炸将完美地发挥作用。分解为单独的字符串,然后每个字符串从索引1检索到索引[arraylength-1],因为索引0包含{和最后一个索引包含}。

$str = substr($str, 1, strlen($str)-1);

因此,对于从索引1切换到last_index-1的每个字符串。

编辑:

你做第一次爆炸(将它切成2个大块):chunk1和chunk2

foreach chunk array $pieces=explode(",",$chunk1); //或块2(这将进一步将碎片切割成由其分隔的字符串,)

$str = substr($pieces, 1, strlen($pieces)-1);

然后,对于每个$ piece,检索其间的内容。 (伪代码)