如何导入多个图像?

时间:2015-01-10 07:30:15

标签: php xml json serialization wordpress-plugin

现场图片正在接受此类格式的多图像导入:

a:10:{i:0;
      a:1:{s:6:"imgurl";s:71:"http://example.com/wp-content/uploads/2015/01/image.jpg";}
      i:1;
      a:1:{s:6:"imgurl";s:71:"http://example.com/wp-content/uploads/2015/01/image.jpg";}
     };

我正在尝试找到一种方法来返回具有上述输出的json_encode。 在此过程中,我无法在转换为数组格式时找出a:10:{}

$arr = array('a' => 10, // <-- I have a problem here what to use
           array( 'i' => 0, 'a' => 1, 
                          array('s' => [6, 'imgurl'], // <-- I have a problem here what to use
                                's' => (71,"http://example.com/wp-content/uploads/2015/01/image.jpg")
                               )
                         )
        );

我这样做是否正确?

更新

抱歉,我不能尽快回复。因为我正在研究序列化和反序列化是如何工作的。

有点历史,我正在使用WP All Import-Import XML / CSV WordPress插件来导入XML数据。

WP自定义帖子类型property包含存储图像的字段名称_property_slider_image。标准拖放XML容器到该字段将不起作用。不工作,它不是每个属性链接下载的图像。

检查mysql数据库后,该字段接受我上面提到的这种类型的synthax。老实说,我不知道它是什么。因为我只知道是json_encode和json_decode。这就是为什么我的帖子提到了json_encode。

感谢Kiyan。他给了我一个暗示在哪里看。

现在我不会手动将每个图像映射到每个属性记录。

结果:

经过一周的研究后,这是我的输出。

function sl_output_property_slider(){
    $image_url_list = array(); 
    foreach (func_get_args() as $n) {
        // get image name
        $img_name = get_image_name($n);
        // add directory location with the following format
        // http://localhost/dev_slrealestate/wp-content/uploads/2015/01/1478_Image.jpeg
        $imgurl = 'http://localhost/dev_site/wp-content/uploads/'. date('Y') .'/'. date('m') . '/' . $img_name;
        array_push($image_url_list, array('imgurl'=>$imgurl));
    }

    $serialized_data = serialize($image_url_list);
    printf($serialized_data);
}

其中function get_image_name($url) - 仅从原始网址字符串返回图像名称。

示例使用 - 短代码

[sl_output_property_slider({Images[1]/Image[1]/ImageURL[1]},
    {Images[1]/Image[2]/ImageURL[1]},{Images[1]/Image[3]/ImageURL[1]},
    {Images[1]/Image[4]/ImageURL[1]},{Images[1]/Image[5]/ImageURL[1]},
    {Images[1]/Image[6]/ImageURL[1]},{Images[1]/Image[7]/ImageURL[1]},
    {Images[1]/Image[8]/ImageURL[1]},{Images[1]/Image[9]/ImageURL[1]},
    {Images[1]/Image[10]/ImageURL[1]}
 )
]

2 个答案:

答案 0 :(得分:2)

这不是json字符串,你必须使用unserialize函数

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

答案 1 :(得分:1)

正如Kiyan所说,您在jsonserialize格式之间感到困惑。

您可以使用以下命令创建您给出的数组表示:

$arr = array(
    array('imgurl' => 'http://example.com/wp-content/uploads/2015/01/image.jpg'),
    array('imgurl' => 'http://example.com/wp-content/uploads/2015/01/image.jpg'),
);

$serialized = serialize($arr);

示例:

echo $serialized;

给出:

  

一个:2:{I:0;一个:1:{S:6: “imgUrl的”; S:55: “http://example.com/wp-content/uploads/2015/01/image.jpg”;} I:1;一个:1:{S:6 : “imgUrl的”; S:55: “http://example.com/wp-content/uploads/2015/01/image.jpg”;}}