0

親切にしてください、私はこれにかなり慣れていないので、おそらく明らかな何かが欠けています。

ECサイトを立ち上げています。製品はすべてユニークで、個別に撮影され、オフラインでも販売されています。注文量が少なく、ディレクトリ内の画像ファイルを追加または削除するだけでオンライン在庫を管理できるようにしたい. この目的のために、JPEG ファイルの EXIF データに製品コードと製品サイズ (価格を決定する) を格納しています。CSV を生成し、1 時間ごとにショップ ソフトウェアにインポートすることを目的としています。

しかし、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 単位で、小数点以下 2 桁です (例: 3.45)。

「。」を削除するために str_replace を試しました。102 ではなく 1.02 を乗算しますが、$size は正しくエコーされますが (例: 345)、乗算 ($total_price) は、$size がまだ整数として扱われていることを示しています (例: 3)。

4

1 に答える 1

1

EXIF データは UTF-16LE としてエンコードされます。最初の NUL で切り捨てられないように、計算で使用する前に、iconv などを介して ASCII に変換する必要があります。

于 2013-02-03T08:39:34.103 に答える