PHP фильтр ввода строки, отключить все новые строки, 1 символ - PullRequest
0 голосов
/ 18 ноября 2009

Я пишу на PHP!

Есть ввод строки пользователя, и я хочу отрезать все новые строки, 1 символ, который больше чем 1 в строке (избегайте <br /><br /> ...).

пример:

I am a




SPaMmEr!

станет:

I am a
SPaMmEr!

или

I am a
.
.
.
.
SPaMmEr!

также

Ответы [ 4 ]

2 голосов
/ 18 ноября 2009

Получение всех строк выполняется следующим образом (если вы хотите перехватывать переводы строк в DOS, Mac и Unix):

$lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $string));

Фильтрация строк с более чем одним символом может быть выполнена с помощью preg_grep():

$lines = preg_grep('/^.{2}/', $lines);

Или используя регулярные выражения для полного процесса:

preg_match_all('/^.{2}.*$/', $string, $matches);
$lines = $matches[0];

Или, если вам не нужен массив, содержащий все оставшиеся строки, вы можете удалить ненужные строки одним вызовом:

$string = preg_replace('/^.?$\n/m', '', $string);
0 голосов
/ 18 ноября 2009

\ n является допустимым вводом для новой строки, а также \ r \ n и \ n \ r. Запустите Regex или str_replace, чтобы заменить все комбинации \ r и \ n на \ n, и вы можете использовать use explode ("\ n", $ string) и проверить все элементы массива на наличие одного символа или пустого. Вы можете удалить их или заменить их одним экземпляром повторяющегося символа, например, Я использую одну новую строку для нового абзаца, поэтому он уничтожит такой.

0 голосов
/ 18 ноября 2009

Почему бы не использовать регулярное выражение для этого:

## replace 1 or more new line symbols with single new line symbol
$empty_lines_trimmed = preg_replace('"(\r?\n)+"', "\n", $empty_lines);
0 голосов
/ 18 ноября 2009

Как насчет этого:

$str = str_replace(array("\n", "\r"), '', $str);

Где $ str - ваш пользовательский ввод.

EDIT

Извините, этот код удаляет все строки независимо от того, все еще может пригодиться.

...