Обработка новых строк в php

У меня есть форма в html, где пользователь может поместить текст в текстовую область.
Я сохраняю содержимое текстовой области в базе данных MySQL (в поле типа TEXT).
Затем я где-то в своем приложении мне нужно загрузить этот текст и поместить его в массив, где в каждом индексе будет одна строка текста.

<textarea rows="10" cols="80"> Row one Row two Row tree </textarea> array (output in "php pseudocode"): $array = array(); $array[0] = Row one; $array[1] = Row two; $array[2] = Row tree; 

Как я это делаю: я сохраняю его в db, затем загружаю его и использую:

 $br = nl2br($string,true); $array = explode("<br />", $br); 

Причина, по которой я использую nl2br , я хочу избежать проблем с концом строк текста с разных платформ. Я имею в виду / n или / r / n.
Но в моем решении должна быть ошибка где-то, потому что она не работает (массив $ array пуст).

Лучшее решение, вероятно, каким-то образом разделило бы его на массив с помощью взрыва или что-то подобное с шаблоном для разрывов строк, но здесь снова возникает проблема с начала разрывов строк, которые я не знаю, как их решить ( проблемы с \ n или \ r \ n ).

Может ли кто-нибудь дать мне совет? Благодарю.

Я предлагаю вам пропустить nl2br пока вы не будете готовы отправить данные клиенту. Чтобы решить вашу проблему:

 // $string = $get->data->somehow(); $array = preg_split('/\n|\r\n/', $string); 

Когда вы получаете ввод в своем скрипте, нормализуйте символы конца строки до PHP_EOL перед сохранением данных в базе данных. Это проверено правильно для меня. Это еще один шаг в процессе ввода фильтра. Вы можете найти другие строки символов EOL, но они наиболее распространены.

 <?php // RAY_temp_user109.php error_reporting(E_ALL); if (!empty($_POST['t'])) { // NORMALIZE THE END-OF-LINE CHARACTERS $t = str_replace("\r\n", PHP_EOL, $_POST['t']); $t = str_replace("\r", PHP_EOL, $t); $t = str_replace("\n", PHP_EOL, $t); $a = explode(PHP_EOL, $t); print_r($a); } $form = <<<FORM <form method="post"> <textarea name="t"></textarea> <input type="submit" /> </form> FORM; echo $form; 

Взорвите на PHP_EOL и пропустите часть nol2br (). Вы можете использовать var_dump () для просмотра результирующего массива.