PHP-funktion Explode - opdeler streng efter separator
Explode bruges til nemt at opdele en streng ved hjælp af et separator.
- Den returnerer de enkelte resultater som et array nummereret fra nul,
- du kan ikke indsætte et array, kun strengen kan indlæses,
- kan ikke ændre afgrænseren under parsing, kan ikke vælge flere afgrænsere.
| Support | PHP 4 og nyere |
|---|---|
| Kort beskrivelse | Opdeling af en streng i et array ved hjælp af separator. |
| Krav | Ingen |
| Bemærk | Du kan ikke indsætte et array, kun en streng. |
Ofte har vi brug for at opdele en streng i henhold til en simpel regel. F.eks. en kommasepareret liste over tal.
Funktionen explode() er fantastisk til dette formål, idet den tager separatoren (som adskiller strengen) som første parameter og selve dataene som anden parameter:
$cisla = '3, 1, 4, 1, 5, 9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo $cislo . '<br>';// Her kan vi behandle tallene yderligere}
Men hvad nu, hvis tallene er adskilt af kommaer, men der er mellemrum omkring dem?
Løsningen er at analysere efter den mindste fælles delstreng og derefter fjerne uønskede tegn omkring den (mellemrum og andet whitespace):
$cisla = '3, 1,4, 1 , 5 ,9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo trim($cislo) . '<br>';// Her kan vi behandle tallene yderligere}
I dette tilfælde fjerner funktionen trim() på en elegant måde whitespace omkring tegnene (mellemrum, tabulatorer, linjeskift, ...) og giver kun rene data.
Begrænsning, begrænser antallet af analyserede enheder i et array
TIP: For mange eksempler er explode() ikke egnet, og det er meget bedre at bruge regulære udtryk.
Ofte ønsker vi dog kun at analysere dataene op til en vis afstand, og den tredje (valgfrie) parameter limit kan bruges til dette formål.
Lad os f.eks. have strukturerede data med kolon-separerede data, hvor vi ønsker at hente indholdet efter det første kolon og ignorere de andre kolontegn. Eksempel:
$cas = 'format: "j.n.Y - H:i"';
Hvis vi kun analyserer strengen som:
$parser = explode(':', $cas);
Vi ville få disse 3 understrenge (i andre tilfælde kan der være mange flere):
'format''"j.n.Y - H''i"'
Derfor sætter vi en grænse for, hvor mange elementer der skal hentes (og eventuelt vil alle andre blive tilføjet til slutningen af det sidste element):
$parser = explode(':', $cas, 2);// komme tilbage:echo $parser[0]; // formatecho $parser[1]; // "j.n.Y - H:i"
Note: Uønskede anførselstegn kan fjernes fra strengen, f.eks. ved at bruge funktionen
trim():
echo trim($parser[1], '"'); // den anden parameter angiver det kort over de tegn, der skal fjernes
Mellem, få en streng mellem to strenge
Ofte har vi brug for at få en streng, der er afgrænset af to andre strenge. Der findes ingen funktion til dette direkte i PHP, men vi kan skrive den selv:
function between(string $left, string $right, string $data): string{$l = explode($left, $data);$r = explode($right, $l[1]);return $r[0];}
Regelmæssige udtryk
Meget mere elegant opdeling og arbejde med strenge kan opnås ved hjælp af regulære udtryk, som jeg diskuterer på en separat side.
Lignende funktioner
- Implode() - sammenkædning af et array til en streng
Eksempel på parsing af IP-adresse
$ip = '10.0.0.138';$parser = explode('.', $ip);echo $parser[0]; // udskriver "10"echo $parser[1]; // udskriver "0";
Variablen $ip indeholder en indtastningsstreng, der analyseres i overensstemmelse med afgrænseren ., og resultatet er et array. Analyseringen fortsætter til slutningen af strengen, medmindre der er angivet en grænse.
Parametre
| # | Type | Beskrivelse |
|---|---|---|
| 1 | string | Adskillelsesstreng. |
| 2 | string | Parsed string. |
| 3 | int | parsing limit. Dette er en valgfri parameter. Eksempel: |
$text = 'PHP er mit yndlingssprog!';$parser = explode('', $text, 1);echo $parser[0]; // udskriver det første ordecho $parser[1]; // udskriver resten af tekstenecho $parser[2]; // udsender ikke noget, fordi der er fastsat en grænse!
Returneringsværdier
Returværdien er et array med en analyseret streng.
Indeksene er nummereret fra nul til X, medmindre der er angivet en grænse.
Forskelle fra tidligere versioner
| PHP-version | Beskrivelse |
|---|---|
| 5.1.0 | Der er tilføjet understøttelse af negativ grænse for overførsler. |
| 4.0.1 | Tilføjet valgfri parameter limit. |
Tips og noter
Når der anvendes en negativ grænse, angives antallet af elementer fra slutningen af strengen.
Eksempel:
$str = 'en|to|tre|fire';// positiv grænseprint_r(explode('|', $str, 2));// negativ grænse (siden PHP 5.1)print_r(explode('|', $str, -1));
Følgende felter vil blive returneret:
Array([0] => one[1] => two|three|four)Array([0] => one[1] => two[2] => three)