laravel — php удаляет неизвестных персонажей

Я создаю веб-приложение, которое будет работать на электронном языке с угловым в качестве основы веб-интерфейса и с Laravel в качестве основы внутреннего интерфейса. В приложении можно войти с помощью смарт-карты (благодаря node-pcsclite), оно читает байты на смарт-карте, а затем я их конвертирую.

Смарт-карта содержит код, который связан с таблицей персонала в моей базе данных MSSQL. Я могу получить код со смарт-карты и войти в приложение, когда оно использует mysql в качестве сервера базы данных.

Теперь, когда я пытаюсь сделать то же самое, но с mssql, я получаю сообщение об ошибке, которое следует просматривать в режиме html вместо самой страницы ошибки.

Скриншот

(Код может быть буквенно-цифровым)

Таким образом, он добавляет все эти странные символы (возможно, несуществующие символы), не так ли много проблем, верно? По крайней мере, так я и думал. Поэтому я попытался исправить это, используя этот код внутри моего контроллера laravel:

preg_replace('/[^A-Za-z0-9\-]/', '', $string);

Это ничего не решило. Тогда я подумал, что у меня могут быть проблемы с запросом, поэтому я запустил SQL Profiler, проблема в том, что (возможно, из-за специальных символов) запрос не работает.

select top 1 * from [Staff] where [CodeInit] = '
go

Так кто-нибудь знает, как действительно убрать странных персонажей?

Если вам нужна дополнительная информация, не стесняйтесь спрашивать.

0

Решение

У меня была эта проблема и я попал на этот вопрос при поиске решения. Я не смог найти никакого решения.

Строка с непечатными символами, полученными из mdecrypt_generic() поэтому я хотел как-то удалить этих персонажей. Когда я копирую и вставляю полученное значение из браузера в текстовый редактор Brackets, на нем отображаются эти красные точки.

Я просто вставил его в Google, а затем он был закодирован в %10, Ничего не помогало до сих пор, поэтому в качестве временного решения я просто использовал rtrim() удалить эти точки.

Скопируйте точку в скобках и замените на "DOT_HERE",

rtrim(rtrim($pvp, "DOT_HERE"), "\0\4");

"\0\4" удалит только nulls and EOT но не этот точечный символ (%10).

Далее приведен скриншот с этой красной точкой. Вы можете использовать текстовый редактор Brackets, чтобы увидеть это.

введите описание изображения здесь

Обратите внимание, что $ pvp — это расшифрованный текст.

-1

Другие решения

Других решений пока нет …