PHP и COM объект возвращает битый параметр массива только в 1 месте Создаем com объект в php. Все работает гладко. $obj = new COM("blablabla.blala"); if ($obj ->Init()) { $result = $obj ->Recognize('C:/1.jpg'"); }
$result если разложить мы увидим это:aaa[]: 0: [фамилия, Иванов] 0: "фамилия" 1: "Иванов" 1: [отчество, Борисович] 0: "отчество" 1: "Борисович" 2: "64" <-- Блин, что тут это за ерунда??? 64 в COM php? 3: [гражданство, рф] 0: "гражданство" 1: "рф"
Мы видим, что у второго индекса просто «64».
Делаем аналогично, подключаем этот же самый COM объект но не через php, а через Powershell. Результат получаем такой: aaa[]: 0: [фамилия, Иванов] 0: "фамилия" 1: "Иванов" 1: [отчество, Борисович] 0: "отчество" 1: "Борисович" 2: [Имя, Александр] <-- Все тут отлично!! 0: "Имя" 1: "Александр" 3: [гражданство, рф] 0: "гражданство" 1: "рф"
ТО есть все отлично через powershell. Как так происходит? Кодировка массива UTF16LE — не ужели массив бьется в php_com_dotnet.dll? Никакие игры с кодировками не помогают, бьется часть массива, что с этим делать вообще не представляю.
В данной ситуации, возможно проблема связана с тем, что COM объект возвращающий ответ может не корректно обрабатывать данные при вызове из PHP. Возможно, есть различия в том, как PHP и Powershell обрабатывают ответ от COM объекта.
Для исправления этой проблемы, можно попробовать следующие шаги:
Проверить исходный код COM объекта и убедиться, что он корректно формирует и возвращает данные.Попробовать использовать другие методы или функции для вызова COM объекта в PHP.Проверить версии PHP и Powershell, возможно проблема связана с несовместимостью версий.Попробовать использовать другие форматы данных (например, JSON) для передачи и получения данных между PHP и COM объектом.
Если ничего из вышеперечисленного не помогает, можно обратиться к разработчику COM объекта или специалисту по PHP для получения более подробной помощи и решения проблемы.
В данной ситуации, возможно проблема связана с тем, что COM объект возвращающий ответ может не корректно обрабатывать данные при вызове из PHP. Возможно, есть различия в том, как PHP и Powershell обрабатывают ответ от COM объекта.
Для исправления этой проблемы, можно попробовать следующие шаги:
Проверить исходный код COM объекта и убедиться, что он корректно формирует и возвращает данные.Попробовать использовать другие методы или функции для вызова COM объекта в PHP.Проверить версии PHP и Powershell, возможно проблема связана с несовместимостью версий.Попробовать использовать другие форматы данных (например, JSON) для передачи и получения данных между PHP и COM объектом.Если ничего из вышеперечисленного не помогает, можно обратиться к разработчику COM объекта или специалисту по PHP для получения более подробной помощи и решения проблемы.