2013-02-04 26 views
0

预先感谢您提供的任何帮助。我将如何解析/分裂这个自定义字符串到数组中?

我有一个这样的字符串:

[{"title":"Image One","description":"Image One\r\nDescription","image":{"attachment_id":"111"}},{"title":"Image Two","description":"Image Two Description","image":{"attachment_id":"222"}},{"title":"Image Three","description":"Image Three\r\nDescription","image":{"attachment_id":"333"}}] 

我不知道我怎么可能把它变成一个数组,这样我可以利用所有附件的ID吗?

喜欢的东西:

echo $attachment_id[0]; 
echo $attachment_id[1]; 

+1

尝试'json_decode' – ogzd

+0

在此帖子中的最高回答json_decode()。我也用过这个。所以为什么我的回答是低估的,我不明白。如果有人解释说会感谢我。谢谢。现在我明白了为什么它被低估了。无需回复。谢谢。 – ripa

回答

1

你所拥有的“字符串”是JSON格式,PHP有一些内置的函数来使用它!

您可以把它变成一个对象或与json_decode

阵列这里把它变成一个PHP阵列的例子:

<?php 

    $json = '[{"title":"Image One","description":"Image One\r\nDescription","image":{"attachment_id":"111"}},{"title":"Image Two","description":"Image Two Description","image":{"attachment_id":"222"}},{"title":"Image Three","description":"Image Three\r\nDescription","image":{"attachment_id":"333"}}]'; 
    $data = json_decode($json, true); 
    print_r($data); 

的输出是:

Array 
(
    [0] => Array 
     (
      [title] => Image One 
      [description] => Image One 
Description 
      [image] => Array 
       (
        [attachment_id] => 111 
       ) 

     ) 

    [1] => Array 
     (
      [title] => Image Two 
      [description] => Image Two Description 
      [image] => Array 
       (
        [attachment_id] => 222 
       ) 

     ) 

    [2] => Array 
     (
      [title] => Image Three 
      [description] => Image Three 
Description 
      [image] => Array 
       (
        [attachment_id] => 333 
       ) 

     ) 

) 
1

这就是JSON。

PHP有一个内置的JSON parser你可以使用:

$attachments = json_decode($data, true); 
foreach ($attachments as $att) { 
    echo $att["title"] . "\n"; 
} 
0

$encoded-variable = [{"title":"Image One","description":"Image One\r\nDescription","image":{"attachment_id":"111"}},{"title":"Image Two","description":"Image Two Description","image":{"attachment_id":"222"}},{"title":"Image Three","description":"Image Three\r\nDescription","image":{"attachment_id":"333"}}]

use  `$result = json_decode($encoded_varaible,true);' 
+0

我用我的小眼睛窥探,开始的东西:解析错误。 – Dale

-1

使用json_decode()像下面。结果你会得到一个数组。 json_decode([{"title":"Image One","description":"Image One\r\nDescription","image":{"attachment_id":"111"}},{"title":"Image Two","description":"Image Two Description","image":{"attachment_id":"222"}},{"title":"Image Three","description":"Image Three\r\nDescription","image":{"attachment_id":"333"}}])

+0

你实际上会得到一个解析错误。即使它有效,它也会是一个对象,而不是数组。 – Dale

+0

好的。感谢@Dale – ripa

0

这不是一个字符串。把它放在引号中,然后它是一个字符串,更准确地说是JSON。您可以使用json_decode将其解析为数组。

$myString = '[{"title":"Image One","description":"Image One\r\nDescription","image": 
    {"attachment_id":"111"}},{"title":"Image Two","description":"Image Two 
    Description","image":{"attachment_id":"222"}},{"title":"Image 
    Three","description":"Image Three\r\nDescription","image":{"attachment_id":"333"}}]'; 

$myArray = json_decode($myString, true); 
var_dump($myArray[0]['image']['attachment_id']; 
0

这是一个JSON编码的字符串。只需将它解码并与json_decode http://php.net/manual/en/function.json-decode.php一起排列即可获得您所需的内容。

<?php 
$string = 'the string above'; 

$array = json_decode($string, true); 
$attachments = array_map(function($e) { 
    return $e['image']['attachment_id']; 
}, $array); 
print_r($attachments); // prints Array (114, 222, 333)