Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строку склеенную в PHP не хочет жевать Javascript 
:(
    Опции темы
=Женек=
Дата 15.10.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



В PHP есть такой код

Код

 $string.= "<TABLE width=100% border=1 rules=none>
                 <TR><TD colspan=2 align=center>Äîáàâèòü êîììåíòàðèé <HR></TD></TR>
                 <FORM method=post action=index.php?news={$id}>
                 <INPUT type=hidden name=addcomment value=1>
                 <TR><TD align=right>Èìÿ: </TD><TD align=left><INPUT type=text name=sender size=30 maxlength=30></TD></TR>
                 <TR><TD align=right>E-mail: </TD><TD align=left><INPUT type=text name=sender_email size=30 maxlength=30></TD></TR>
                 <TR><TD align=right>Êîììåíòàðèé: </TD><TD align=left><TEXTAREA type=text name=comment ROWS=5 COLS=30></TEXTAREA></TD></TR>
                 <TR><TD colspan=2 align=center><INPUT type=SUBMIT VALUE=Îòïðàâèòü><INPUT type=reset VALUE=Î÷èñòèòü></TD></TR>
                </FORM>

              </TABLE><br>";

print "

<HTML>
<BODY>
asdsad
<script>
  parent.document.all.comment_{$id}.innerHTML='{$string}';
</SCRIPT>
</BODY>
</HTML>
";




Склеивается строка $string, которая потом передается в свойство innerHTML элемента <TD comment_x>

Как видите в HTML разметке есть переходы на новую строку. Javascript генерирует ошибку. Если выстроить всю HTML разметку в единую строку все ОК, но неудобно для дальнейшего редактирования. Как орбработать $string, чтобы javascript его скушал?
PM MAIL   Вверх
skyboy
Дата 15.10.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(=Женек= @  15.10.2007,  14:40 Найти цитируемый пост)
 Как орбработать $string, чтобы javascript его скушал?

удалить переносы строк после формирования.
Код

$string= str_ireplace("\n","",$string);

или при передаче.
Код

" parent.document.all.comment_{$id}.innerHTML='".str_ireplace("\n","",$string)."';"

PM MAIL   Вверх
=Женек=
Дата 15.10.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Ну а все же, чтобы готовый код был человеческим с переносами?
Неужели innerHTML не может передать символ перевода каретки?

Кстати, почему-то $string= str_ireplace("\n","",$string); не убирает перевод каретки...

PM MAIL   Вверх
skyboy
Дата 15.10.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



потому, что, видимо, твои Enter'ы редактор сохраняет как "\n\r" или "\r\n". в таком случае сначала надо "обнулить" "\n", а потом дополнительно - "\r".
Цитата(=Женек= @  15.10.2007,  15:17 Найти цитируемый пост)
Ну а все же, чтобы готовый код был человеческим с переносами?

готовый код - с переносами. без переносов только значение стрковой константы в javascript. Или ты хочешь, чтоб после применения javascript измененный HTML-код был с переносами? тогда в РНР меняй "\n" на "'+'\n' + '". Т.е. на код, который превратится в перенос строки уже под JavaScript, а не при формировании.

PM MAIL   Вверх
=Женек=
Дата 15.10.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



В принципе первый вариант работает. ОДнако попытался добиться красивого готового HTML кода.


Сделал так:

Код

$string= str_replace("\r","",$string);
$string= str_replace("\n", "'+'\n' + '" ,$string);


Получилось вот что:

Код

 parent.document.all.comment_1.innerHTML='<TABLE width=100% border=1 rules=none>'+'
' + '                 <TR><TD colspan=2 align=center>Добавить комментарий <HR></TD></TR>'+'
' + '                 <FORM method=post action=index.php?news=1>'+'
' + '                 <INPUT type=hidden name=addcomment value=1>'+'
' + '                 <TR><TD align=right>Имя: </TD><TD align=left><INPUT type=text name=sender size=30 maxlength=30></TD></TR>'+'
' + '                 <TR><TD align=right>E-mail: </TD><TD align=left><INPUT type=text name=sender_email size=30 maxlength=30></TD></TR>'+'
' + '                 <TR><TD align=right>Комментарий: </TD><TD align=left><TEXTAREA type=text name=comment ROWS=5 COLS=30></TEXTAREA></TD></TR>'+'
' + '                 <TR><TD colspan=2 align=center><INPUT type=SUBMIT VALUE=Отправить><INPUT type=reset VALUE=Очистить></TD></TR>'+'
' + '                </FORM>'+'


Почему-то \n так и остается в виде символа переноса.

Добавлено через 3 минуты и 59 секунд
Ладно, конечный результат я так понял должен быть таким : "<td>"+"\n"+"</TD>";
Но ведь, насколько я помню, (у меня был большой перерыв в программировании, стал забывать азы, помня при этом тонкости) - можно интегрровать с помощью апострофов и слешей символ перевода в саму строку типа <TD>/\n</TD>

Напомните, пожалуйста и подскажите.
PM MAIL   Вверх
flashaa
Дата 15.10.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Код

$string= str_replace("\n", "'+'\n' + '" ,$string);


Эта строка не коректна, в итоге ты заменяешь шило на мыло, т.е. символы переноса на символы переноса. Т.к. внешние кавычки - двойные, символы интерпретируются как переносы.
Поменяй на следующее:

Код

$string= str_replace("\n", '\n',$string);

PM MAIL   Вверх
vasac
Дата 15.10.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



+ пропустить через addSlashes, чтобы в строку не затесалась кавычка.
+ почитать основы HTML на тему, как в этом самом HTML переносить строки.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.