2011-12-28 16 views
19

Wiem, że "eksplodować" dzieli łańcuch i przekształca go w tablicę dla każdego wystąpienia. Ale jak podzielić na pierwszym wystąpieniu i zachować wszystko po pierwszym wystąpieniu?Jak mogę podzielić ciąg znaków na pierwsze wystąpienie czegoś?

Przykłady:

$split = explode('-', 'orange-yellow-red'); 
echo $split[1]; // output: "yellow" 

^ja jak to do wyjściowych: żółto-czerwony

$split = explode('-', 'chocolate-vanilla-blueberry-red'); 
echo $split[1]; // output: "vanilla" 

^I chcieliby to wyjściowych: wanilii borówki czerwony

Odpowiedz

34

Można zdać limit jako trzeci parametr explode że będzie wykonać zadanie.

$split = explode('-', 'orange-yellow-red',2); 
echo $split[1]; //output yellow-red 
+1

Dzięki !!!!!!! Nie wiedziałem o tym !!! – supercoolville

+0

Dzięki, że zaoszczędziłeś mój czas .. – khushi

-1

Być może wyrażenie regularne?

[^-]+- 
+0

regex jest bardziej kosztowna od zwykłego 'explode ('sep', 'foobar', 2);' – tdammers

6

Zobacz na trzeci parametr explode:

$limit

Jeżeli graniczna jest ustawiona i dodatnie, zwrócony macierz zawiera maksymalnie elementów krańcowych z ostatnim elementem zawierającym reszta struny.

Jeśli parametr ograniczenia jest ujemny, zwracane są wszystkie składniki oprócz ostatniego -limitu.

Jeśli parametr granica wynosi zero, to jest traktowany jako 1.

$a=explode('-','chocolate-vanilla-blueberry-red', 2); 
echo $a[1]; // outputs vanilla-blueberry-red 
1
$split = explode('-', 'chocolate-vanilla-blueberry-red'); 
unset($split[0]); 
echo implode('-', $split); # vanilla-blueberry-red 
0

rozwiązanie bez zmiennej:

Powiązane problemy