PHP filtre string input, tüm satırsonu, 1 karakter kesti

3 Cevap php

PHP yazıyveyaum!

Orada kullanıcı dize girdi, ve ben tüm satırsonlarını, üst üste fazla 1 1 karekter (önlemek <br /><br /> ...) kesmek istiyveyaum.

Örnek:

I am a




SPaMmEr!

olacak:

I am a
SPaMmEr!

veya

I am a
.
.
.
.
SPaMmEr!

aynı şekilde

3 Cevap

Tüm satırları Başlarken (DOS yakalamak istiyorsanız, yağmurluk ve Unix satır beslemeleri) bu şekilde yapılır:

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

Birden fazla karakteri ile filtreleme hatları ile yapılabilir preg_grep() :

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

Veya tam bir süreç için normal ifadeler kullanarak:

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

Kalan tüm satırları içeren bir dizi ihtiyacınız yoksa ya da, tek bir çağrı ile istenmeyen dizeleri kaldırabilirsiniz:

$string = preg_replace('/^.?$\n/m', '', $string);

Buna ne dersiniz:

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

$ Str kullanıcı girişi olduğu.

EDIT:

Üzgünüz, bu kod ne olursa olsun tüm satırları kaldırır, hala kullanışlı gelebilir.

Neden bunun için regexpi kullanmayın:

## replace 1 or more new line symbols with single new line symbol
$empty_lines_trimmed = preg_replace('"(\r?\n)+"', "\n", $empty_lines);