Передача строки со спецсимволами

Ilg

Новичок
Передача строки со спецсимволами

Здравствуйте!
Использую следующий код:
PHP:
<script language="JavaScript">
	 document.form1.UserName.value = '<?php echo $uname;?>';
</script>
Если значение строковой переменной $uname не содержит служебных символов (', <, > и т. д.), то все работает нормально. Но в случае появления спецсимвола в строке - перестает работать
Возникает вопрос - как в этом случае передать значение текстовой переменной в Java/HTML?
Заранее, Большое спасибо!
 

zerkms

TDD infected
Команда форума
Ilg
покажи сгенерированный жс, который "не работает".
 

Ilg

Новичок
Автор оригинала: zerkms
Ilg
покажи сгенерированный жс, который "не работает".
Вот несколько вариантов:
1) document.form1.UserName.value = 'qwerty'1';
(здесь при вводе qwerty'1)
2) document.form1.UserName.value = '1<2\';
(здесь при вводе 1<2\)

P.S.: Кстати, $uname тоже берется из формы
 

zerkms

TDD infected
Команда форума
Ilg
ты не замечаешь, что < тут не при чём?
1. тут нужно заэкранировать кавычку
2. заэкранировать слеш

php.net/addslashes
 

Ilg

Новичок
Автор оригинала: zerkms
Ilg
ты не замечаешь, что < тут не при чём?
1. тут нужно заэкранировать кавычку
2. заэкранировать слеш

php.net/addslashes
Замечаю...:)
Спасибо! addslashes вроде помог
Но осталось еще одно "недоразумение":)
Если переменная $uname берется из многострочного поля ввода, то опять не работает. Получается:
PHP:
document.form1.UserMessage.value = '1111
2222';
(при вводе
1111
2222
)
 

zerkms

TDD infected
Команда форума
Ilg
добавить в конец строки перед переносом \

ps: иди уже почитай основы жс где-нить?
 

x-yuri

Новичок
добавить в конец строки перед переносом \
вообще-то так не по стандарту:
ЗАМЕЧАНИЕ
Символ 'КонецСтроки' не может появиться в строковом литерале, даже если ему предшествует обратный слэш \. Правильным путём включения символа перевода строки в строковой литерал является использование escape-последовательности, такой как \n или \u000A.
хоть и работает

а вообще надежнее/удобнее json_encode
 

zerkms

TDD infected
Команда форума
x-yuri
мерси за поправку :)

ps: сам js вообще не занимаюсь, так что пардон за ошибку.
 

Ilg

Новичок
Вот фигня...
addslashes не справляется с многострочным текстом, а json_encode вроде работает, но почему-то не справляется с ', т. е. если в тексте встретится одиночная кавычка - перестает работать
Неужели нет нормального способа передать такой текст?!

Делаю так:
PHP:
document.form1.UserMsgSubject.value = '<?php echo addslashes($umsgsubject);?>';
document.form1.UserMessage.value = eval("(" + new String(<?php echo json_encode($umessage);?>) + ")");
 

fStrange

Новичок
а json_encode вроде работает, но почему-то не справляется с ', т. е. если в тексте встретится одиночная кавычка - перестает работать
есть же в мане
json_encode($a,JSON_HEX_QUOT),
 

x-yuri

Новичок
fStrange
php-5.3.0? json_encode сам по себе нормальный литерал возвращает
 

Ilg

Новичок
С кавычками разобрался...
Делаю так:
PHP:
document.form1.UserMessage.value = <?php echo json_encode($umessage);?>;
В этом случае одинарные кавычки не напрягают:)

Только оказывается json_encode не работает с русскими буквами
 

Adelf

Administrator
Команда форума
работает.

С кодировками скорее всего напутали.
 
Сверху