У меня странное поведение в FuelPHP. Я генерирую поле формы с помощью метода FuelPHP Form :: input(). Проблема в том, что некоторые символы преобразуются в объекты HTML. Например, символ š
преобразуется в š
. Код генерации поля формы можно увидеть ниже, и вывод можно увидеть на картинке (первый вывод - это просто обычный HTML-текст).Значение поля формы FuelPHP преобразует некоторый символ в объекты HTML
<?php echo $user->profile_fields['firstname']; ?>
<?php echo Form::input('firstname', Input::post('firstname', isset($user->profile_fields['firstname']) ? $user->profile_fields['firstname'] : '')); ?>
самое странное это происходит только в поле формы, где значение считывается из БД profile_fields
поля в таблице пользователей ($user->profile_fields['firstname']
). Profile_fields
- стандартное текстовое поле MySQL в пользовательской таблице, используемое драйвером SimpleAuth. Это поле содержит сериализованные пары ключей => значений пользователя, такие как имя, фамилия, адрес и т. Д. Если я прочитал одно и то же значение из несериализованного поля в БД и создаю поле формы с этим значением, то оно будет отображаться правильно ,
Я использую utf8_unicode_ci
сортировку и кодировку в настройках моей БД, а локаль и кодирование FuelPHP также правильно установлены на UTF-8
.
Update1: посмотри на это:
//values read from MySQL DB, via FuelPHP orm, unserialized
echo $user->profile_fields['firstname'] . ' ' . $user->profile_fields['lastname'];
echo '<br>';
//same values serialized and assigned to PHP array var
$test = serialize(array('firstname'=>'Urška', 'lastname'=>'Neumüller'));
var_dump($test);
echo '<br>';
$test2 = unserialize($test);
var_dump($test2);
echo '<br>';
echo '<input type="text" value="'.$test2['firstname'].'">';
echo '<input type="text" value="'.$test2['lastname'].'">';
echo '<br>';
echo '<input type="text" value="'.htmlspecialchars($test2['firstname']).'">';
echo '<input type="text" value="'.htmlspecialchars($test2['lastname']).'">';
echo '<br>';
echo '<input type="text" value="'.$user->profile_fields['firstname'].'">';
echo '<input type="text" value="'.$user->profile_fields['lastname'].'">';
echo '<br>';
echo '<input type="text" value="'.htmlspecialchars($user->profile_fields['firstname']).'">';
echo '<input type="text" value="'.htmlspecialchars($user->profile_fields['lastname']).'">';
htmlspecialchars
используются здесь, потому что FuelPHP форма класс использовать его при создании поля формы и является причиной некоторых символов преобразуются в HTML сущности.
выход:
Является ли эта проблема в БД, PHP, FuelPHP ... Я совершенно потерял здесь!
yes Я знаю это, но для всех других форм, где я читал значения из базы данных из несериализованных полей, они отображают ОК, и у меня нет Эта проблема. Это только проблема при чтении и настройке значений формы из поля user_fields таблицы пользователя, где данные сериализуются! –