Regex для использования с preg_match php, чтобы найти новую строку - PullRequest
4 голосов
/ 01 июня 2011

Я довольно новый / ржавый с регулярными выражениями. Я собираю блок текста из элемента textarea и хочу проверить, не использовал ли, среди прочего, человек, который его заполнил, какие-либо абзацы.

Я использую следующее, и я знаю, что это неправильно. Любая помощь будет оценена.

preg_match('/\r\n|\n|\r/',  $_GET['text']);

Ответы [ 2 ]

4 голосов
/ 01 июня 2011

Ваше регулярное выражение не так. Но для определения абзацев вам нужно искать два последовательных символа новой строки:

 preg_match('/(\r?\n){2}/'

Возврат каретки \r не является обязательным, и я бы просто проверил \n перевод строки, поскольку большинство платформ воспринимают это как разрыв строки Очевидно, что эта проверка не будет выполнена, если отправленный текст будет одной строкой без абзацев или новых строк.

В качестве альтернативы вы также можете проверить наличие двух новых строк с любого рода пробелов между ними:

 preg_match('/(\s*\n){2}/'
0 голосов
/ 01 июня 2011

Предполагая, что:

Это абзац. Это параграф. Это параграф. Это параграф. Это параграф. Это параграф. Это параграф. Это параграф. Это абзац.

А это другое. И это другое. И это другое. И это другое. И это другое. И это другое. И это другое. И это другое. И это другое. И это другое.

Вы можете просто сделать:

if (str_replace("\r\n\r\n", '', $str) != $str)
  // the input contains at least two paragraphs
...