Polecenie eksploduj służy do łatwego dzielenia ciągu znaków przez separator.
PHP 4 i nowsze |
---|
Krótki opis |
Wymagania |
Uwaga |
Często musimy podzielić ciąg znaków według jakiejś prostej reguły. Na przykład lista liczb oddzielonych przecinkami.
Świetnie nadaje się do tego funkcja explode(), która jako pierwszy parametr przyjmuje separator (oddzielający ciąg znaków), a jako drugi - same dane:
$cisla = '3, 1, 4, 1, 5, 9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo $cislo . '<br>.';// Tutaj możemy dalej przetwarzać liczby}
Ale co zrobić, jeśli liczby są oddzielone przecinkami, ale wokół nich są spacje?
Rozwiązaniem jest parsowanie według najmniejszego wspólnego podłańcucha, a następnie usunięcie niepożądanych znaków wokół niego (spacji i innych białych znaków):
$cisla = '3, 1,4, 1 , 5 ,9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo trim($cislo) . '<br>.';// Tutaj możemy dalej przetwarzać liczby}
W tym przypadku funkcja trim()
w elegancki sposób usuwa białą przestrzeń wokół znaków (spacje, tabulatory, podziały wierszy, ...), dając tylko czyste dane.
WSKAZÓWKA: Dla wielu przykładów funkcja explode() nie jest odpowiednia i lepiej jest używać wyrażeń regularnych.
Często jednak chcemy przetwarzać dane tylko do pewnej odległości i w tym celu można użyć trzeciego (opcjonalnego) parametru limit.
Na przykład mamy dane strukturalne rozdzielone dwukropkami, w których chcemy pobrać zawartość po pierwszym dwukropku i zignorować pozostałe dwukropki. Przykład:
$cas = 'format: "j.n.Y - H:i".';
Gdybyśmy mieli przetworzyć ten ciąg tylko jako:
$parser = explode(':', $cas);
Otrzymalibyśmy te 3 podłańcuchy (w innych przypadkach może być ich znacznie więcej):
'format''"j.n.Y - H''i"'
Dlatego ustalamy limit liczby elementów, które mają zostać pobrane (i ewentualnie wszystkie pozostałe zostaną dołączone do końca ostatniego elementu):
$parser = explode(':', $cas, 2);// wróć:echo $parser[0]; // formatecho $parser[1]; // "j.n.Y - H:i"
Uwaga: Niechciane cudzysłowy można usunąć z łańcucha, na przykład za pomocą funkcji
trim()
:
echo trim($parser[1], '"'); // drugi parametr określa mapę znaków do usunięcia
Często zachodzi potrzeba pobrania ciągu, który jest ograniczony przez dwa inne ciągi. Nie ma takiej funkcji bezpośrednio w PHP, ale możemy ją napisać sami:
function between(string $left, string $right, string $data): string{$l = explode($left, $data);$r = explode($right, $l[1]);return $r[0];}
Znacznie bardziej eleganckie dzielenie i pracę z ciągami znaków można osiągnąć za pomocą wyrażeń regularnych, które omawiam na osobnej stronie.
$ip = '10.0.0.138';$parser = explode('.', $ip);echo $parser[0]; // drukuje "10".echo $parser[1]; // drukuje "0";
Zmienna $ip
zawiera łańcuch wejściowy, który jest parsowany zgodnie z delimiterem .
, a zwracana wartość jest tablicą. Przetwarzanie jest kontynuowane do końca łańcucha, chyba że zostanie określony limit.
# | Typ | Opis |
---|---|---|
1 | ciąg znaków | Ciąg znaków rozdzielających. |
2 | string | Parsowany ciąg znaków. |
3 | int | limit parsowania. Jest to parametr opcjonalny. Przykład: |
$text = 'PHP to mój ulubiony język!';$parser = explode('', $text, 1);echo $parser[0]; // wypisuje pierwsze słowoecho $parser[1]; // wypisuje resztę tekstuecho $parser[2]; // nie wypisuje niczego, ponieważ został ustawiony limit!
Wartością zwracaną jest tablica zawierająca sparsowany ciąg znaków.
Indeksy są numerowane od zera do X
, chyba że podano ograniczenie.
Wersja PHP | Opis |
---|---|
5.1.0 | Dodano obsługę ujemnego limitu przepustek. |
4.0.1 | Dodano opcjonalny parametr limit. |
W przypadku użycia ujemnego limitu podawana jest liczba elementów od końca łańcucha.
Przykład:
$str = 'jeden, dwa, trzy, cztery';// granica dodatniaprint_r(explode('|', $str, 2));// limit ujemny (od PHP 5.1)print_r(explode('|', $str, -1));
Zostaną zwrócone następujące pola:
Array([0] => one[1] => two|three|four)Array([0] => one[1] => two[2] => three)
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl