-1

给定一个具有深度嵌套的 JSON 解析对象,我想从这样的嵌套结构中提取一个图像(数组):

object: {
   type: "...",
   title:"...",
   description: {
     image:[
      src:"logo1.png",
      ...:...
     ]
   },
   somethingelse: {
      deeper:[
        {imageurl:"logo2.jpg"}
      ]
   }
}

我将如何创建一个返回这样的图像数组的函数?

$images = getAllImagesFromObject(json_parse($jsonstring));

我事先不知道嵌套有多深以及密钥是什么,任何以 http 开头并以 jpg、png 和 gif 结尾的字符串都会很有用

我没有任何示例,因为我不知道使用哪种方法,也不关心密钥是什么,所以一些 var 转储也可以。

也许甚至正则表达式的 jsonstring"http://....[jpg|gif|png]"将是一个解决方案

4

1 回答 1

2

像这样的东西应该可以解决问题。虽然我没有测试。

function getAllImagesFromObject($obj) {
    $result = array();
    foreach ($obj as $prop)
        if (is_array($prop) || is_object($prop))
            $result = array_merge($result, getAllImagesFromObject($prop));
        else if (preg_match('/\.(jpg|jpeg|gif|png|bmp)$/', $prop))
            $result[] = $prop;
    return $result;
}
于 2013-06-19T16:48:15.437 回答