preg_split gelen boş bir dize döndürür

3 Cevap php

Şu anda ben bu almaya çalışıyorum:

Array
(
    [0] => hello
    [1] => 
    [2] => goodbye
)

Endeks 1 boş dize nerede.

$toBeSplit= 'hello,,goodbye';

$textSplitted = preg_split('/[,]+/', $toBeSplit, -1);

$textSplitted bu gibi görünüyor:

Array
(
    [0] => hello
    [1] => goodbye
)

PHP 5.3.2 kullanıyorum

3 Cevap

Buna ne dersiniz:

$textSplitted = preg_split('/,/', $toBeSplit, -1);

Sizin bölünmüş regex tüm virgüller, sadece bir kapma edildi.

Mümkün olduğu kadar uyumlu ise [,]+, bir veya daha fazla karakter virgül anlamına gelir. Sadece /,/ kullanın ve çalışır:

$textSplitted = preg_split('/,/', $toBeSplit, -1);

Ama sen bile düzenli ifadeyi gerekmez:

$textSplitted = explode(',', $toBeSplit);

Sizin desen ayırıcı (hiçbir nedenle bir karakter sınıfını kullanarak konum olarak sözdizimi de mükemmel değil) gibi virgül bir dizi kullanarak metni böler, böylece iki (ya da iki yüz) virgül sadece biri olarak sayılır.

Her neyse, senin sadece ayırıcı olarak değişmez bir karakteri kullanarak yana kullanın explode():

$str = 'hello,,goodbye';

print_r(explode(',', $str));

çıktı:

Array
(
    [0] => hello
    [1] => 
    [2] => goodbye
)