Премахване на прекъснати линии

Задавал съм този въпрос и преди, но изглежда не получих правилния отговор. Имам проблем с нови редове в текста. Javascript и jQuery не харесват неща като това:

alert('text

text);

Когато изтегля информация от таблица на база данни, която има прекъсващ ред в нея, JS и jQuery не могат да я анализират правилно. Казаха ми да използвам n2lbr(), но това не работи, когато някой използва "shift+enter" или "enter", когато въвежда текст в съобщение (откъдето получавам този проблем). Все още получавам отделни редове, когато го използвам. Изглежда, че правилно прилага маркера BR след прекъсването на реда, но все още оставя прекъсването там.

Може ли някой да помогне тук? Получавам данните за съобщението с jQuery и ги изпращам на PHP файл за съхранение, така че бих искал да отстраня проблема там.

Обикновено това не би било проблем, но искам да изтегля всички потребителски съобщения, когато за първи път заредят входящата си кутия и след това да им я покажа чрез jQuery, когато изберат определено съобщение.


person Phillip    schedule 11.07.2011    source източник


Отговори (3)


Можете да използвате регулярен израз, за ​​да замените нови редове с интервали:

alert('<?php preg_replace("/[\n\r\f]+/m","<br />", $text); ?>');

Модификаторът m ще съвпада между новите редове, което в този случай според мен е важно.

редактиране: съжалявам, не разбрах, че всъщност искаш <br /> елемента, а не интервали. актуализиран отговор съответно.

edit2: подобно на @LainIwakura, направих грешка в моя регулярен израз, отчасти поради предишната редакция. новият ми регулярен израз замества само символи CR/NL/LF, а не символ за празно пространство (\s). имайте предвид, че има куп уникод символи за прекъсване на ред, които не съм разпознал... ако трябва да се справите с тях, може да искате да прочетете за синтаксиса на regexp за уникод

person smcphill    schedule 11.07.2011
comment
Това го направи! Предполагам, че в другите примери липсва "м". Точно това ми трябваше. Ще приема, когато мога. - person Phillip; 11.07.2011
comment
Слава Богу, че съществува Stackoverflow. Току-що отново ми спести време! - person Boris Delormas; 10.01.2012

Редактиране: Добре след много препъване в себе си, вярвам, че искате това:

$str = preg_replace('/\n+/', '<br />', $str);

И с това си лягам...твърде късно, за да отговарям на въпроси.

person LainIwakura    schedule 11.07.2011
comment
Не работи, все още се връща с линията на прекъсване на място. preg_replace('/\s\s+/','',nl2br($_POST['message'],false)); - person Phillip; 11.07.2011

Обикновено използвам json_encode() за форматиране на низ за използване в JavaScript, тъй като прави всичко необходимо за създаване на JS-валиднастойност.

person binaryLV    schedule 11.07.2011