Столкнулся с одной проблемой, может кто-то знает решение. Есть поле ввода:
<input type="text" name="user_first_name" value="<?=$this->config->item('t_user_first_name');?>">
<?=$this->config->item('t_user_first_name');?> - эта переменная содержит имя. Но если имя содержит знак " (двойные кавычки), то все что после двойных кавычек пропадает, и сами кавычки тоже пропадают.
Например при передачи:
Неглид"укус
Выведется:
Неглид
Как решить эту проблему?
Спустя 24 минуты, 54 секунды (4.07.2011 - 16:34) tatti написал(а):
надо экранировать кавычки
Спустя 4 минуты, 22 секунды (4.07.2011 - 16:38) bulgakov написал(а):
То ли я туплю... не пойму зачем тут $this этот инпут что ли в классе находится? А зачем?...
Спустя 1 минута, 9 секунд (4.07.2011 - 16:39) bulgakov написал(а):
И да экранируйте кавычки обратным слешем
Спустя 2 минуты, 1 секунда (4.07.2011 - 16:41) bulgakov написал(а):
Можно еще использовать функцию addslashes() при записи в переменную и перед выводом ее куда то stripslashes()
Спустя 3 минуты, 31 секунда (4.07.2011 - 16:45) vzov написал(а):
Цитата (bulgakov @ 4.07.2011 - 13:39) |
И да экранируйте кавычки обратным слешем |
Что-то я не понял. Если пройтись посимвольно и проставлять \ перед ", то он так и остается:
Неглид\"укус
Спустя 1 минута, 57 секунд (4.07.2011 - 16:47) Игорь_Vasinsky написал(а):
Спустя 10 минут, 32 секунды (4.07.2011 - 16:57) bulgakov написал(а):
Нет, вы не действительно не поняли если не поставить обратный слэш перед кавычкой то парсер php будет читать этот символ как служебный который означанет например начало или конец строки, а с обратным слешем кавычки будут читаться как обычный элемент строки.
Спустя 55 секунд (4.07.2011 - 16:58) bulgakov написал(а):
И опять же если много таких кавычек не надо проходить по ним и посимвольно расставлять слеши можно использовать функцию addslashes()
Спустя 16 минут, 51 секунда (4.07.2011 - 17:15) vzov написал(а):
Цитата (bulgakov @ 4.07.2011 - 13:57) |
а с обратным слешем кавычки будут читаться как обычный элемент строки. |
Да, но как обратный слеш убрать?
Спустя 1 минута, 33 секунды (4.07.2011 - 17:17) bulgakov написал(а):
Повторюсь еще раз, для того что бы добавить в строку обратные слеши - addslashes а для того что бы эти слеши убрать - stripslashes
Спустя 1 минута, 40 секунд (4.07.2011 - 17:18) Игорь_Vasinsky написал(а):
stripslashes() блин. не судьба строковые функции глянуть???
Цитата |
эта переменная содержит имя. Но если имя содержит знак " (двойные кавычки), то все что после двойных кавычек пропадает, и сами кавычки тоже пропадают. |
откуда переменная? может она уже там урезана.
Спустя 3 минуты, 14 секунд (4.07.2011 - 17:22) bulgakov написал(а):
Игорь_Vasinsky
Цитата |
не судьба строковые функции глянуть??? |
Если уж он с такой темой сюда пожаловал то видимо не судьба) Хотя довольно странно про кавычки рассказывается в первой главе практически любой книжки по php
Спустя 1 минута, 42 секунды (4.07.2011 - 17:23) Игорь_Vasinsky написал(а):
вообще можно обработать и htmlspecialchars() и будет ему счастье.
Спустя 1 минута, 53 секунды (4.07.2011 - 17:25) bulgakov написал(а):
Игорь_Vasinsky
Или заглянуть на php.net и будет много счастья
Или заглянуть на php.net и будет много счастья
Спустя 4 минуты, 15 секунд (4.07.2011 - 17:29) Игорь_Vasinsky написал(а):
всё есть здесь. токакак чё-так бан
Спустя 2 минуты, 56 секунд (4.07.2011 - 17:32) vzov написал(а):
Цитата (bulgakov @ 4.07.2011 - 14:22) | ||
Игорь_Vasinsky
Если уж он с такой темой сюда пожаловал то видимо не судьба) Хотя довольно странно про кавычки рассказывается в первой главе практически любой книжки по php |
Да не в том то проблема, что не знаю как добавить или прибрать обратные слешы со строки... Я не знаю как в форму вставить ее...
<input type="text" name="user_last_name" value='<?=$this->config->item('t_user_last_name');?>'><br/>
Вставить слеши в value - оно так и выведет... Я в этом не разобрался
Спустя 4 минуты, 12 секунд (4.07.2011 - 17:37) bulgakov написал(а):
addslashes нужно применять когда у тебя записываются данные вот сюда - $this->config->item('t_user_last_name'); а уже когда ты их выводиш в инпуте то:
Например так
<input type="text" name="user_last_name" value='<?=stripslashes($this->config->item('t_user_last_name'));?>'><br/>
Например так
Спустя 37 минут, 36 секунд (4.07.2011 - 18:14) vzov написал(а):
<input type="text" name="user_first_name" value="<?=form_prep($this->config->item('t_user_first_name'))?>">
так заработало отлично и с одинарными и с двойными кавычками. Спачибо всем за помощь
Спустя 9 минут, 36 секунд (4.07.2011 - 18:24) bulgakov написал(а):
Гм.. form_prep это самописная функция какая-то или из фреймворка? А то что-то на php.net не нашел
Спустя 4 минуты, 39 секунд (4.07.2011 - 18:28) vzov написал(а):
Цитата (bulgakov @ 4.07.2011 - 15:24) |
Гм.. form_prep это самописная функция какая-то или из фреймворка? А то что-то на php.net не нашел |
Это функция фреймворка CodeIgniter. Я на нем проект дописываю.
http://codeigniter.com/user_guide/helpers/form_helper.html
Спустя 5 минут, 11 секунд (4.07.2011 - 18:34) bulgakov написал(а):
А тогда ясно, ну можно и так конечно.... кому как удобнее главное мысль правильная)
Спустя 13 минут, 49 секунд (4.07.2011 - 18:47) tatti написал(а):
или кликнуть сюда для безмерного счастья