Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема в выводе сообщений из-за enter

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
MichaelPak
Отправлено: 16 Февраля, 2012 - 23:32:46
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Делаю сообщения на сайте. Если пользователь ставит энтер, то так в БД и сохранится. Сообщения выводятся JS, так что сообщения передаю через json. Но если json будет вида:
CODE (htmlphp):
скопировать код в буфер обмена
  1. {
  2.    "1" : "text1
  3.   text2"
  4. }

то она не отпарситься. Что можно сделать?
Пытаюсь поймать enter и заменить на str_replace() на что-нибудь другое, а потом в js поставить enter, но ничего не получается.
 
 Top
Okula
Отправлено: 16 Февраля, 2012 - 23:36:55
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




PHP:
скопировать код в буфер обмена
  1. $text = str_replace(PHP_EOL, " ", $text); // заменил Enter на пробел

(Отредактировано автором: 16 Февраля, 2012 - 23:37:07)

 
 Top
MichaelPak
Отправлено: 16 Февраля, 2012 - 23:52:53
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Okula пишет:
PHP:
скопировать код в буфер обмена
  1. $text = str_replace(PHP_EOL, " ", $text); // заменил Enter на пробел
А можно как нибудь вставить enter, чтобы json отпарсил?
 
 Top
Bio man
Отправлено: 17 Февраля, 2012 - 00:03:09
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




MichaelPak, энтер это перевод строки (\n), в разных ОС может быть другим, и для этого есть константа PHP_EOL, которую можно вставить куда угодно в контексте РНР
 
 Top
MichaelPak
Отправлено: 17 Февраля, 2012 - 00:05:55
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Bio man пишет:
MichaelPak, энтер это перевод строки (\n), в разных ОС может быть другим, и для этого есть константа PHP_EOL, которую можно вставить куда угодно в контексте РНР
Но результат в json все равно будет один и тот же.
 
 Top
Okula
Отправлено: 17 Февраля, 2012 - 04:47:55
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Когда ты заменишь \n на пробел у тебя уже всё будет в одну строку,какие ещё проблеммы?
 
 Top
Мелкий Супермодератор
Отправлено: 17 Февраля, 2012 - 08:30:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





Возможно, с моей подачи, но на этом форуме в последнее время часто мелькает константа PHP_EOL. Хочу напомнить, что это никакая не магия, а значение, статично вкомпилированное в PHP (main/php.h) и содержащее перевод строки для системы, под которой скрипт исполняется и только для неё. Т.е. Mac'овое (\r) распознавание строк под никсами (\n) не будет распознано вовсе, а от виндового (\r\n) в строке будет оставаться лишний \r.


-----
PostgreSQL DBA
 
 Top
illy
Отправлено: 17 Февраля, 2012 - 09:15:48
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




PHP:
скопировать код в буфер обмена
  1. $text=str_replace("\r\n", "<br>", $text);
  2. $text=str_replace("\n", "<br>", $text);


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Okula
Отправлено: 17 Февраля, 2012 - 12:01:19
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Мелкий, я и раньше использовал эту константу. Удобнее мне так. А её значение можно изменить в php.ini Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 17 Февраля, 2012 - 12:19:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





Okula пишет:
А её значение можно изменить в php.ini

Хде это? Сишник из меня, конечно, никакой, но в сорцах php явно указана константа. И в php.ini никаких ссылок на возможность её изменить не нашёл.


-----
PostgreSQL DBA
 
 Top
nkl
Отправлено: 17 Февраля, 2012 - 22:17:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Янв. 2012  


Помог: 1 раз(а)




а не проще в <textarea> добавить атрибут wrap="virtual"? Пускай ставит себе сколько хочет переносов, а в переменную все равно пойдет непереносимая строка.
 
 Top
Okula
Отправлено: 17 Февраля, 2012 - 22:52:01
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Мелкий, помню вроде где-то можно изменить, когда в конфигах ковырялся что-то такое вроде видел. Хотя может мне привидилось Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB