Почему данные $ _POST теряют символы UTF8, когда-то встроенные в объект? - PullRequest
2 голосов
/ 15 июня 2019

Я изучал множество тем, связанных с проблемами персонажей UTF8.Я подтвердил, что соединение с MySQL и база данных в порядке с UTF-символами, и обнаружили интересную проблему.

У меня есть форма, значения поля ввода которой хранятся в Class.Однако, когда обе переменные $_POST и Class сбрасываются рядом друг с другом, я заметил, что переменные класса больше не содержат символов UTF8.

Мой класс имеет следующий конструктор (я тольковставка соответствующих битов, поскольку это огромный класс):

public function __construct($data = array()) {
    if ( isset( $data['id'] ) ) $this->id = (int) $data['id'];
    if ( isset( $data['order'] ) ) $this->order = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['order'] );
    if ( isset( $data['comment'] ) ) $this->comment = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['comment'] );
}

Задача конструктора - очистить ввод от вредоносного ввода, я также протестировал регулярное выражение, и оно не соответствует ни одному из символов UTF8которые являются входными данными и используются как $something = new Booking($_POST)

$_POST против Class:

Postarray(17) { ["order"]=> string(18) "Külső-Belső Kárpit" ["comment"]=> string(0) "" } 

Booking obj:object(Booking)#3 (17) { ["id"]=> NULL ["order"]=> string(14) "Kls-Bels Krpit" ["comment"]=> string(0) "" }

Я прочитал, что может быть что-то не так с кодировкой файла класса,Я использую Atom и при проверке кодировка файла показана как UTF8.У кого-нибудь есть идеи, почему это так?

1 Ответ

0 голосов
/ 15 июня 2019

Я протестировал строку regex с помощью нескольких онлайн-тестеров, и это действительно то, что избавило от символов UTF - https://www.regextester.com/ хорошо показывает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...