Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.06.2010, 11:00
Интересующийся
Отправить личное сообщение для FreePaint Посмотреть профиль Найти все сообщения от FreePaint
 
Регистрация: 14.06.2010
Сообщений: 10

RegExp + Многострочный текст (\r)
Всем привет.
Возникла проблема при парсинге многострочного текста с \n и \r и т.д

Суть в том, что через Ajax PHP приложение шлёт нам текст, в котором переносы, \n \r и т.д
Но когда получаю эти данные в JavaScript, то при match у текста в одну строку, всё норм, а у текста в несколько строк вообще не работает.

Регулярку делаю так var rex = new RegExp('<b>(.*?)<\/b>',"im");
P.S вроде в регулярке поставил m... толку 0

Если PHP приложение шлёт в таком виде:
$TEXT = '<b>Я ОЛОЛОЛО</b>';

то всё нормально.

А если PHP приложение шлёт в таком виде:
$TEXT = '<b>;lk;lk;
       l;;jkkj
       kjlkjjljjlkjklj</b>';

то match у JavaScript усирается каллавыми массами.

Последний раз редактировалось FreePaint, 14.06.2010 в 11:04.
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2010, 11:15
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

/<b>([\s\S]*?)<\/b>/
Ответить с цитированием
  #3 (permalink)  
Старый 14.06.2010, 12:01
Интересующийся
Отправить личное сообщение для FreePaint Посмотреть профиль Найти все сообщения от FreePaint
 
Регистрация: 14.06.2010
Сообщений: 10

Нет не работает вообще)
Ответить с цитированием
  #4 (permalink)  
Старый 14.06.2010, 13:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Работает.
Ответить с цитированием
  #5 (permalink)  
Старый 14.06.2010, 13:17
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

FreePaint, в строке нельзя использовать переносы строк. Заменяйте их на \n или экранируйте их.
Ответить с цитированием
  #6 (permalink)  
Старый 14.06.2010, 14:00
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от exec
FreePaint, в строке нельзя использовать переносы строк. Заменяйте их на \n или экранируйте их.
В php можно.
Ответить с цитированием
  #7 (permalink)  
Старый 14.06.2010, 14:05
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

B@rmaley.e><e, у него ведь из PHP код в JS выводится.
Ответить с цитированием
  #8 (permalink)  
Старый 14.06.2010, 14:22
Интересующийся
Отправить личное сообщение для FreePaint Посмотреть профиль Найти все сообщения от FreePaint
 
Регистрация: 14.06.2010
Сообщений: 10

Цитата:
Заменяйте их на \n или экранируйте их.
Эхх в начале так и делал... Просто думал что можно реализовать чисто на JS, но раз Вы пишите что JS пучет с переносами, буду заменять в пхп.

Спасибо всем за советы, да пребудет с Вами сила !!!
Ответить с цитированием
  #9 (permalink)  
Старый 14.06.2010, 14:32
Интересующийся
Отправить личное сообщение для FreePaint Посмотреть профиль Найти все сообщения от FreePaint
 
Регистрация: 14.06.2010
Сообщений: 10

Сделал так, не стал в ПХП убирать переносы, а уже в самом JavaScript, в полученном тексте сразу сделал replace(/\r\n/g,'')

Последний раз редактировалось FreePaint, 14.06.2010 в 14:36.
Ответить с цитированием
  #10 (permalink)  
Старый 14.06.2010, 16:53
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

exec, \n это и есть переносы строк.
Если же вы имели в виду, что делать что-то вроде
Код:
alert('<?php
echo "line1
line2
line3";
?>')
Нельзя, то
Сообщение от FreePaint
Суть в том, что через Ajax PHP приложение шлёт нам текст
FreePaint, exec бредит, не слушайте его.
alert('<b>trololo\r\nololo</b> <b>trololo\r\nololo</b>'.match(/<b>([\s\S]*?)<\/b>/i)[1])

И еще: при задании регулярки через new RegExp не забывайте экранировать слеши в строке.

Последний раз редактировалось B@rmaley.e><e, 14.06.2010 в 16:57.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
lastChild работает в IE, как тут быть? Puaris83 Firefox/Mozilla 4 17.04.2010 23:56
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02
Как сделать чтобы text() брал только текст родителя без текста вложенных контейнеров? Andrey32 jQuery 3 23.05.2009 01:33