PHP Manual
/
Spracovanie reťazcov

Funkcia PHP Explode - rozdelenie reťazca podľa oddeľovača

26. 11. 2019

Obsah článku

Explode sa používa na jednoduché rozdelenie reťazca pomocou oddeľovača.

  • Jednotlivé výsledky vráti ako pole očíslované od nuly,
  • nemôžete vložiť pole, vstupom je len reťazec,
  • nemôže zmeniť oddeľovač počas analyzovania, nemôže vybrať viacero oddeľovačov.
Podpora PHP 4 a novšie
Stručný popis Rozdelenie reťazca na pole pomocou oddeľovača.
Požiadavky Žiadne
Poznámka Nemožno vložiť pole, iba reťazec.

Často potrebujeme reťazec rozdeliť podľa nejakého jednoduchého pravidla. Napríklad zoznam čísel oddelených čiarkou.

Na tento účel je skvelá funkcia explode(), ktorá ako prvý parameter berie oddeľovač (oddeľujúci reťazec) a ako druhý parameter samotné údaje:

$cisla = '3, 1, 4, 1, 5, 9';
$parser = explode(', ', $cisla);
foreach ($parser as $cislo) {
echo $cislo . '<br>';
// Tu môžeme čísla ďalej spracovať
}

Ale čo ak sú čísla oddelené čiarkami, ale okolo nich sú medzery?

Riešením je analyzovať podľa najmenšieho spoločného podreťazca a potom odstrániť nežiaduce znaky okolo neho (medzery a iné biele znaky):

$cisla = '3, 1,4, 1 , 5 ,9';
$parser = explode(',', $cisla);
foreach ($parser as $cislo) {
echo trim($cislo) . '<br>';
// Tu môžeme čísla ďalej spracovať
}

V tomto prípade funkcia trim() elegantne odstráni biele miesta okolo znakov (medzery, tabulátory, zalomenia riadkov, ...) a poskytne len čisté údaje.

Limit, ktorý obmedzuje počet analyzovaných entít do poľa

TIP: Pre mnohé príklady nie je funkcia explode() vhodná a je oveľa lepšie použiť regulárne výrazy.

Často však chceme analyzovať údaje len do určitej vzdialenosti a na tento účel možno použiť tretí (nepovinný) parameter limit.

Majme napríklad štruktúrované údaje oddelené dvojbodkou, kde chceme získať obsah za prvou dvojbodkou a ignorovať ostatné dvojbodky. Príklad:

$cas = 'formát: "j.n.Y - H:i"';

Ak by sme analyzovali reťazec len ako:

$parser = explode(':', $cas);

Získali by sme tieto 3 podreťazce (v iných prípadoch ich môže byť oveľa viac):

'format'
' 'j.n.Y - H'
'i"'

Preto nastavíme limit, koľko prvkov sa má získať (a prípadne sa všetky ostatné prvky pridajú na koniec posledného prvku):

$parser = explode(':', $cas, 2);
// vráťte sa:
echo $parser[0]; // formát
echo $parser[1]; // "j.n.Y - H:i"

Poznámka: Nežiaduce úvodzovky možno z reťazca odstrániť napríklad pomocou funkcie trim():

echo trim($parser[1], '"'); // druhý parameter určuje mapu znakov, ktoré sa majú odstrániť

Medzi, získanie reťazca medzi dvoma reťazcami

Často potrebujeme získať reťazec, ktorý je ohraničený dvoma inými reťazcami. Priamo v PHP na to neexistuje žiadna funkcia, ale môžeme si ju napísať sami:

function between(string $left, string $right, string $data): string
{
$l = explode($left, $data);
$r = explode($right, $l[1]);
return $r[0];
}

Regulárne výrazy

Oveľa elegantnejšie delenie a prácu s reťazcami možno dosiahnuť pomocou regulárnych výrazov, ktorým sa venujem na samostatnej stránke.

Podobné funkcie

Príklad rozboru IP adresy

$ip = '10.0.0.138';
$parser = explode('.', $ip);
echo $parser[0]; // vypíše "10"
echo $parser[1]; // vypíše "0";

Premenná $ip obsahuje vstupný reťazec, ktorý je analyzovaný podľa oddeľovača ., návratom je pole. Rozbor pokračuje až do konca reťazca, pokiaľ nie je zadaný limit.

Parametre

# Typ Popis
1 reťazec Oddeľovací reťazec.
2 reťazec Parsovaný reťazec.
3 int limit pre parsovanie. Toto je nepovinný parameter. Príklad:

$text = "PHP je môj obľúbený jazyk!;
$parser = explode(' ', $text, 1);
echo $parser[0]; // vypíše prvé slovo
echo $parser[1]; // vypíše zvyšok textu
echo $parser[2]; // nevypíše nič, pretože bol nastavený limit!

Vrátené hodnoty

Návratovou hodnotou je pole s analyzovaným reťazcom.

Indexy sú číslované od nuly po X, pokiaľ nie je zadaný limit.

Rozdiely oproti predchádzajúcim verziám

Verzia PHP Popis
5.1.0 Pridaná podpora záporného limitu na priechody.
4.0.1 Pridaný voliteľný parameter limit.

Tipy a poznámky

Pri použití záporného limit je uvedený počet prvkov od konca reťazca.

Príklad:

$str = 'jeden|dva|tri|štyri';
// kladná hranica
print_r(explode('|', $str, 2));
// záporný limit (od PHP 5.1)
print_r(explode('|', $str, -1));

Vrátia sa nasledujúce polia:

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:

Související články

1.
3.
Status:
All systems normal.
2024