2010-05-18 10 views
19

dizisi ile Patlayan sınırlayıcı bir dizi kullanılarak) (patlamaya herhangi bir şekilde var mı?Ayırıcılar

PHP Manuel:

dizi patlayabilir (string $ sınırlayıcı, string $ dizge [, int $ sınır])

yerine string $delimiter kullanarak performansını etkilemeden array $delimiter kullanmak için herhangi bir yol yoktur çok fazla?

cevap

25

uygun bir regex ile kullanın preg_split().

+6

: 'print_r (preg_split ("/ [,.] /", "0 1,2,3")); 'verecek' Array ([0] => 0: [1] => 1 [2 ] => 2 [3] => 3) '. – sirhc

+2

'print_r (preg_split ("/ [\.] /", "0 1,2,3"));' Eğer :) Teşekkür demek olsa da, muhtemelen sanırım en iyi yol. – JoeC

-1

php metodu birden sınırlayıcılar desteklemez patlayabilir, bu yüzden onun bir dizi geçemez. Ayrıca , dize ne tür birden çok sınırlayıcıları ayrıştırma var? En iyi bahse girer, sınırlayıcılarınız arasında dolaşmak ve patlayan dizelerden bazılarını yeniden patlatmak olacaktır. 65Fbef05 kodunun @ artırıldı

51
$str = 'Monsters are SUPER scary, bro!'; 
$del = array('a', 'b', 'c'); 

// In one fell swoop... 
$arr = explode($del[0], str_replace($del, $del[0], $str)); 
+1

Bu, normal ifadeleri kullanmamak için harika bir numaradır. –

+0

Bu, hızlı ifadelerden daha hızlı olmalı. – Pioul

+0

inanılmaz, parlak ve basit bir çözüm, kudos! –

6
function explode_by_array($delim, $input) { 
    $unidelim = $delim[0]; 
    $step_01 = str_replace($delim, $unidelim, $input); //Extra step to create a uniform value 
    return explode($unidelim, $step_01); 
} 

. İlk sınırlayıcıyı kullanıyoruz, çünkü "+delim+" orijinal dizgede kullanılabilir. Örneğin

İlgili konular