Скопировать и вставить <wbr> создает раздражающий знак минус. Ищем PHP фильтр

У меня странная проблема.

Мы используем идентификаторы транзакций для банковских заказов наших клиентов в следующем формате: U123C123P123B123,

После пробного бронирования мы скопировали текст идентификатора транзакции (правильно отображаемый) из результатов нашего онлайн-банкинга с помощью ctrl+c. Этот текст, введенный в нашу систему снова (путем вставки strg+v), не может быть обработан, потому что:

При вставке<wbr>"превращается в знак минус. Знак минус не отображается в поле формы. Но он пройдет. MySQL не может обработать запрос с этим странным знаком минус.

Исходный код банковского вывода выглядит следующим образом:U123C123P123<wbr>B123".

Большинство программного обеспечения (Firefox, Thunderbird, ...) показывает правильный T-ID после вставки. Некоторые редакторы, такие как notepad++, Dreamweaver, показывают вставленный T-ID, включая знак минус. Подобно: "U123C123P123-B123"

Как я могу удалить этот дурацкий знак минус? Я уже пробовал с str_replace и strip_tags.

Извините за мой английский.

1 ответ

Мое лучшее предположение заключается в том, что какой-то конкретный персонаж попадает в ваш вывод перед B123.

Проверьте систему онлайн-банкинга. Перейдите на страницу с идентификатором транзакции и сохраните его на жестком диске. Откройте его с помощью редактора, который может отображать непечатаемые символы (например, vi в Linux) и проверьте область, где появляется конкретная строка. Если строка появляется с <wbr> символ, то вы можете изменить программное обеспечение системы онлайн-банкинга, чтобы он не выводил этот символ там.

Однако (как я подозреваю), если у вас нет доступа к этой системе с точки зрения ее изменения, и вам нужно что-то исправить с вашей стороны, вы можете прикрепить фильтр в поле формы или отфильтровать данные самостоятельно до вызов базы данных.

$field = strtoupper($_POST['transaction_id']);
$sanitized = str_replace('<WBR>', '', $field);
$sanitized = str_replace(chr(173), '', $sanitized);

173 - это мягкий дефис &shy так что это, скорее всего, то, что приходит. Вы всегда можете сделать var_dump для опубликованных данных и проверить фактический код ASCII того, что входит.

НТН

Другие вопросы по тегам