Sırayla birden satırsonu ile regex

4 Cevap php

Ben (cevap onunla çalışır eğer preg_split () da bir seçenek) 2 veya daha fazla \r\n 'nin üzerinde bir dize bölmek için () PHP'nin bölünmüş kullanmaya çalışıyorum. Benim şu anki çabadır:

split("(\r\n){2,}",$nb);

Bu sorun 2 veya 3 \r\n 's, sonra gider ve bir sonraki bulur orada her zaman eşleşir olduğunu. Bu, 4 veya daha fazla \r\n 's ile etkisiz.

Ben iki veya daha fazla \r\n tüm örnekleri 'ler iki \r\n olarak aynı tedavi edilmesi' gerekiyor. Örneğin, ben gerekiyordu

Hello\r\n\r\nMy\r\n\r\n\r\n\r\n\r\n\r\nName is\r\nShadow

olmaya

array('Hello','My','Name is\r\nShadow');

4 Cevap

Bir Tomalak sünnetinde ile preg_replace için PREG_SPLIT_NO_EMPTY bayrağı () ekleme "/(\\r\\n){2,}/" Benim için bu yapılıyordu.

preg_split() should ile bunu

$pattern = "/(\\r\\n){2,}/";

Ne şu öneri hakkında:

$ Nb = implode ("\ r \ n", array_filter (explode ("\ r \ n", $ nb)));

Bu benim için çalışıyor:

$nb = "Hello\r\n\r\nMy\r\n\r\n\r\n\r\n\r\n\r\nName is\r\nShadow";
$parts = split("(\r\n){2,}",$nb);
var_dump($parts);
var_dump($parts === array('Hello','My',"Name is\r\nShadow"));

Baskılar:

array(3) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(2) "My"
  [2]=>
  string(15) "Name is
Shadow"
}
bool(true)

\r\n ile temsil edilen karakterlerin elde etmek için, ikinci testte double quotes edin.