我正在开发一个网站,我需要使用exiftool提取图像的元数据(jpeg)。我正在使用这段代码:
$cmd = exec("exiftool ".$this->url, $result);
$result
现在是一个经典阵列:
array (size=113)
0 => string 'ExifTool Version Number : 10.40' (length=39)
1 => string 'File Name : photo7.jpg' (length=44)
2 => string 'Directory : images' (length=40)
3 => string 'File Size : 139 kB' (length=40)
4 => string 'File Modification Date/Time : 2017:11:26 16:27:05+01:00' (length=59)
5 => string 'File Access Date/Time : 2017:12:17 23:07:18+01:00' (length=59)
6 => string 'File Inode Change Date/Time : 2017:11:26 16:27:05+01:00' (length=59)
7 => string 'File Permissions : rw-r--r--' (length=43)
8 => string 'File Type : JPEG' (length=38)
9 => string 'File Type Extension : jpg' (length=37)
...
但是我想把这个数组变成另一个带有意义键而不是数字的数组。更好的是拥有一个json对象。在任何情况下,我希望最终的数组看起来像这样:
array (size=113)
'ExifTool Version Number' => string '10.40' (length=5)
'File Name' => string 'photo7.jpg' (length=10)
...
有没有一种简单的方法可以达到这个目的?
答案 0 :(得分:0)
只需将字符串拆分为冒号......
$result2 = array();
foreach($result as $value){
$tmp = preg_split("#\s*\:\s*#", $value);
$result2[$tmp[0]] = $tmp[1];
}
$result = result2;
答案 1 :(得分:0)
一种更简单的方法是使用-json
的 exiftool
选项。返回图像及其属性的JSON列表:
[{
"SourceFile": "img/mural.jpeg",
"ExifToolVersion": 10.60,
…
因此,您只需json_decode
(
implode
(
$result
))