У меня есть программа PHP, которая считывает определенный ФАЙЛ из ИНВЕНТАРНОГО СКАНЕРА. Данные передаются в одну строку, вот так.
3701804901070125616 Chardin Steki Plus Car Exclusive Jasmine Maria Chardin Steki Plus Car 2131970080 1603300138370 1804902720123549 Morinaga IQ Support Momo & Ringo 125 мл x 3 Morinaga IQ Support Momo & Ringo 1901030 080 160330013837018049 87072042557 Жевательный уход за дыханием Мускат 25 зерен Breath Care Cam 25T Мускат 2121070080 1603300138 Они могут быть разделены каждые 128 байт. Вот так:

Вот шестнадцатеричный код строки шириной 256 байт
0 : 33 37 30 31 38 30 34 39 30 31 30 37 30 31 32 35 36 31 36 e3 82 b7 e3 83 a3 e3 83 ab e3 83 80 e3 83 b3 e3 80 80 e3 82 b9 e3 83 86 e3 82 ad e3 83 97 e3 83 a9 e3 82 b9 e3 82 af e3 83 ab e3 83 9e e5 b0 82 e7 94 a8 e3 80 80 e3 82 b8 e3 83 a3 e3 82 b9 e3 83 9f e3 83 b3 e3 83 9e e3 83 aa e3 82 a2 ef bd bc ef bd ac ef be 99 ef be 80 ef be 9e ef be 9d 20 ef bd bd ef be 83 ef bd b7 ef be 8c ef be 9f ef be 97 ef bd bd ef bd b8 ef be 99 ef be 8f 20 ef bd bc ef be 9e 32 31 33 31 39 37 30 30 38 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 36 30 33 33 30 30 31 33 38 33 37 30 31 38 30 34 39 30 32 37 32 30 31 32 33 35 34 39 e6 a3 ae e6 b0 b8 ef bc a9 ef bc b1 e3 82 b5 e3 83 9d e3 83 bc e3 83 88 e3 80 80 e3 82 82 e3 82 82 ef bc 86 e3 82 8a e3 82 93 e3 81 94 е3 80 [3701804901070125616.................................... ............. .................................................. ...................................2131970080 16033001383701804902720123549............................................ ..] 100 : 80 ef bd 91 ef bc 92 ef bc 95 ef bd 8d ef bd 8c c3 97 ef bc 93 e3 80 80 20 20 20 20 ef be 93 ef be 98 ef be 85 ef bd b6 ef be 9e 49 51 ef bd bb ef be 8e ef be 9f ef bd b0 ef be 84 20 ef be 93 ef be 93 26 ef be 98 ef be 9d ef bd ba ef be 9e 31 39 30 31 30 33 30 30 38 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 36 30 33 33 30 30 31 33 38 33 37 30 31 38 30 34 39 38 37 30 37 32 30 34 32 35 35 37 e5 99 9b e3 82 80 e3 83 96 e3 83 ac e3 82 b9 e3 82 b1 e3 82 a2 e3 80 80 e3 83 9e e3 82 b9 e3 82 ab e3 83 83 e3 83 88 e3 80 80 ef bc 92 ef bc 95 e7 b2 92 e3 80 80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ef be 8c ef be 9e ef be 9a ef bd bd ef bd b9 ef bd b1 ef bd b6 ef be 91 20 32 35 54 20 ef be 8f ef bd bd ef bd b6 ef bd af ef be 84 20 20 32 31 32 31 [........... ...........IQ........... ......&............ 1901030080 16033001383701804987072042557............................................ ..... .. ................. 25Т ..... 2121] 200 : 30 37 30 30 38 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 36 30 33 33 30 30 31 33 38 [070080 1603300138]
Вот мой PHP, который читает файл.
$fp = fopen($vanReadfile, "r"); стадо ($ fp, LOCK_SH); стадо ($ fp, LOCK_UN); $vandataBuf= fgets($fp); //fgets, поскольку только 1 непрерывная строка $convertBufstring = mb_convert_encoding($vandataBuf, "UTF-8","Shift-JIS"); $tenpo_cd =mb_substr($convertBufstring,$i+0,3,"UTF-8"); $chiku_cd =mb_substr($convertBufstring,$i+3,2,"UTF-8"); $shori_kbn =mb_substr($convertBufstring,$i+5,1,"UTF-8"); $jan_cd =mb_substr($convertBufstring,$i+6,13,"UTF-8"); $prod_nm =mb_substr($convertBufstring,$i+19,52,"UTF-8"); $prod_kn =mb_substr($convertBufstring,$i+71,20,"UTF-8"); $jicfs_class_cd =mb_substr($convertBufstring,$i+91,6,"UTF-8"); $prod_tax =mb_substr($convertBufstring,$i+97,3,"UTF-8"); $regi_duty_kbn =mb_substr($convertBufstring,$i+100,1,"UTF-8"); $auto_order_kbn =mb_substr($convertBufstring,$i+101,1,"UTF-8"); $spacex16 =mb_substr($convertBufstring,$i+102,16,"UTF-8"); Вывод файла с использованием приведенного выше кода выглядит следующим образом.
ТЕНПО: 370 ЯНВАРЬ CD: 4901070125616 НАЗВАНИЕ ПРОДУКТА: Эксклюзивный автомобиль Chardin Steki Plus Jasmine Maria Chardin Steki Plus Car 213197 НАЗВАНИЕ ПРОДУКТА КН: 0080 Компакт-диск JICFS КЛАСС: 16033 РЭГИ ДОЛГ КБН: 3 АВТО ЗАКАЗ КБН: 8 ПРОСТРАНСТВО 3701804902720123 Результат, который я хочу, должен выглядеть примерно так: ТЭНПО: 370 ЯНВАРЬ CD: 4901070125616 **НАЗВАНИЕ ПРОДУКТА**: Chardin Suteki Plus Car Exclusive Jasmine Maria **НАЗВАНИЕ ПРОДУКТА KN**: Пластический массаж со стейком Шардан Компакт-диск JICFS КЛАСС: 213197 РЭГИ ДОЛГ КБН: 3 АВТО ЗАКАЗ КБН: 8 ПРОСТРАНСТВО (здесь 16 пробелов) Все остальные substr() верны. Проблема заключается в чтении НАЗВАНИЯ ПРОДУКТА (ПОЛНАЯ ширина). Программа читает иногда меньше или больше.
Вот пример:
シャルダン ステキプラスクルマ専用 ジャスミンマリア