взорвать textarea php (в новых строках)

я могу сделать:

explode("\n", $_POST['thetextarea']);

и работает ли он на всех платформах? (Вопрос, который я задаю, будет ли это когда-нибудь \r\n, а не просто \n")

РЕДАКТИРОВАТЬ:

Я забыл упомянуть, что сохраняю $_POST['thetextarea'] в базу данных mysql VARCHAR 255. Кажется, \r\n преобразуется в \n.


person Chris Muench    schedule 14.08.2011    source источник
comment
возможный дубликат stackoverflow .com/questions/760282/   -  person Arnaud Le Blanc    schedule 14.08.2011
comment
Если текстовое поле содержит \r\n, то разбиение на новые строки все равно будет работать, а в строках останется только посторонний возврат каретки.   -  person mario    schedule 14.08.2011


Ответы (4)


Это сделает трюк, заданный \r\n, \r или \n:

preg_split('/\r\n|[\r\n]/', $_POST['thetextarea'])
person Long Ears    schedule 14.08.2011
comment
Ага. У меня тоже сработало, не \r\n. - person khany; 11.02.2015
comment
с небольшой разницей у меня сработало, двойная кавычка вместо одинарной /\r\n|[\r\n]/ и я не знаю, почему - person vahid; 02.12.2019

Вы должны использовать:

explode("\r\n", $_POST['thetextarea']);

Это всегда будет то же самое.

Браузеры и другие пользовательские агенты позаботятся о том, чтобы они были :-)

См. http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1 для получения дополнительной информации.

person PeeHaa    schedule 14.08.2011
comment
Однако не все пользовательские агенты являются браузерами. - person mario; 14.08.2011
comment
@mario: также согласно спецификации HTML5 (черновик, который я знаю), строки заканчиваются CRLF. dev.w3.org/html5/spec/Overview.html# элемент textarea, если я прав - person PeeHaa; 14.08.2011
comment
новая ссылка w3c.github.io/html/sec-forms .html#the-textarea-элемент - person piotr_cz; 30.09.2018

Вы также можете использовать константу PHP_EOL:

explode(PHP_EOL, $_POST['thetextarea']);
person Sascha Galley    schedule 14.08.2011
comment
не будет ли PHP_EOL просто использовать разрыв строки текущей платформы? Если да, то он вам здесь не нужен :) - person PeeHaa; 14.08.2011

Вы можете сделать что-то вроде этого:

$text = trim($_POST['textareaname']);
$text = nl2br($text);
person Jatin Babbar    schedule 23.06.2016
comment
Важно помнить, что эта функция НЕ заменяет символы новой строки тегами ‹br›. Скорее, он вставляет тег ‹br› перед каждой новой строкой, но при этом сохраняет сами новые строки! - парень из руководства php.net - person Robbe; 06.05.2017