Zend Form расшифровывает данные о населении - PullRequest
0 голосов
/ 23 февраля 2012

У меня небольшая проблема с данными декодирования, поступающими из базы данных.

Мои данные хранятся в базе данных как utf8, для этого примера это «коррозия и время», которое сохраняется как «коррозия & время». Теперь я хочу заполнить поле формы этими данными, к этому полю применен фильтр htmlSpecialChars.

При просмотре в браузере я вижу: «коррозия & время»

Если я использую html_entity_decode, я получаю: «коррозия $amp; время»

и если я также удалю фильтр из формы, то получу: «коррозия и время»

Можно ли как-нибудь заполнить форму, не удаляя фильтр из поля?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

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

Если вы знаете, что использовали htmlspecialchars для кодирования данных, тогда используйте htmlspecialchars_decode для декодирования данных.

Description

string htmlspecialchars_decode ( string $string [, int $quote_style = ENT_COMPAT ] )

 This function is the opposite of htmlspecialchars(). It converts special HTML entities back to characters. 

The converted entities are: &, " (when ENT_NOQUOTES is not set), ' (when ENT_QUOTES is set), < and >. 
0 голосов
/ 23 февраля 2012

Я думаю, что хорошим решением было бы создать собственный Zend_Filter .В своем пользовательском фильтре используйте htmlspecialchars_decode () , чтобы преобразовать такие вещи, как & обратно в &.

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