Почему обрезается часть кириллических строк при создании vCard QR-кода с помощью qrlib.php?
Делаю QR-код с контактом vCard. Собираю из строк, наподобие:
...
$addressStreet = quoted_printable_encode('Малоохтинский проспект, 15');
$addressTown = quoted_printable_encode('Санкт-Петербург');
...
Так все работает отлично. Но видно, что код содержит много информации, точек становится очень много.
Обратил внимание, что во всяких генераторах QR-кодов, код с тем же набором информации явно "меньше".
Попробовал закодировать строки без quoted_printable_encode и все читается, и код стал меньше. Но, появилась проблема, что некоторые строки обрезаются. Причем не вначале или конце, а где-то в середине.
Например, адрес из примера выше, с кода считывается примерно как Адрес: Малоохтинкт-Петербург
Не могу понять в чем дело. Такое ощущение, что строки не умещаются в какое-то ограничение. Но что это за ограничение и как его обойти, мне найти не удалось. (Генераторы же это как-то делают). Буду благодарен за подсказку в чем дело, или где искать ответ.
Проверил, происходит именно то что описывал. Пропадает часть текста.
Вот пример получающегося qr-кода. Часть информации просто пропала и "съехала"
Data:
BEGIN:VCARD VERSION:3.0 N:Андревченко;Александр FN:Александр Андревченко ORG:«Компания» TITLE:Менеджер по продажам URL:www.company.ru TEL;WORK;VOICE:+7(987)654-3210 TEL;TYPE=cell:+7(987)654-3210 ADR;TYPE=work:;;Малоохтинский пр. 18;Санкт-Петербург;191984;Россия EMAIL:andrevchenko@pochta.ru END:VCARD
А формат карты правильный ?
TEL;WORK;VOICE:+XXX - неправильно, должно быть TEL;type=WORK;type=VOICE:+XXX
Может в этом дело?
Если карта генерируется с помощью quoted_printable_encode - данные тоже так же выглядят, с точностью до значений ?
include "qrlib/qrlib.php";
$text=
'BEGIN:VCARD
VERSION:3.0
N:Андревченко;Александр
FN:Александр Андревченко
ORG:«Компания»
TITLE:Менеджер по продажам
URL:www.company.ru
TEL;WORK;VOICE:+7(987)654-3210
TEL;TYPE=cell:+7(987)654-3210
ADR;TYPE=work:;;Малоохтинский пр. 18;Санкт-Петербург;191984;Россия
EMAIL:andrevchenko@pochta.ru
END:VCARD';
QRcode::png($text, 'test.png', 'L', 4, 2);
Что я сделал не так ? У меня zxing распознал все, что я ему предложил
Parsed Result
Александр Андревченко
Менеджер по продажам
«Компания»
Малоохтинский пр. 18
Санкт-Петербург
191984
Россия
+7(987)654-3210
+7(987)654-3210
andrevchenko@pochta.ru
www.company.ru
ksnk, Да, если везде проставить quoted_printable_encode - то все становится ок, но код разрастается значительно. В принципе, это не критично, но интересно разобраться почему так происходит.
взято отсюда https://github.com/t0k4rt/phpqrcode
версия php 7.1.5. На 5.6 тоже так же отработала. В php.ini, вроде, существенных правок нет, практически все по дефолту
ksnk, аналогично, utf, версия qrlib та же. php 5.6
Эхх, ладно, спасибо за помощь.
Позже попробую запустить на другом хостинге, подозреваю, что дело в нем все-таки. Раз все остальное одинаково)