善待,我对此很新,可能会遗漏一些明显的东西。
我正在建立一个电子商务网站。产品都是独一无二的,单独拍照,也可以离线销售。订单量很低,我想通过简单地添加或删除目录中的图像文件来管理在线库存。为此,我将产品代码和产品大小(确定价格)存储在JPEG文件的EXIF数据中。意图是每小时生成一个CSV并将其导入商店软件。
但是,我无法理解为什么不能对从EXIF数据中提取的字符串执行计算。
这是我的错误代码:
$dir = '.';
$all_names = scandir($dir);
$ignore = array(".", "..", "sold", "onhold", "exifread.php");
$files = array_diff($all_names, $ignore);
foreach ($files as $file) {
$exif = exif_read_data($file, 0, true);
$ifd0 = $exif[IFD0];
$size = $ifd0['Comments'];
$prod_code = $ifd0['Author'];
$time_taken = $ifd0['DateTime'];
$price_per_m2 = 102;
$gst = 1.1;
$total_price = ($size * $price_per_m2) * $gst;
echo "$file;$size;$prod_code;$time_taken;$total_price<br />\n";
}
?>
$ size被视为一个整数,但大小都是m2,有两位小数(例如3.45)。
我尝试使用str_replace删除'。'乘以1.02而不是102,但是当$ size正确回显(例如345)时,乘法($ total_price)表明$ size仍然被视为一个ineger(例如3)。
答案 0 :(得分:1)
EXIF数据编码为UTF-16LE。您需要先将它通过iconv等转换为ASCII,然后才能在计算中使用它,以免在第一个NUL中被截断。