/
Elaborazione di catene

Funzione PHP Explode - divide la stringa per separatore

26. 11. 2019

Obsah článku

Explode è usato per dividere facilmente una stringa con un separatore.

  • Restituisce i singoli risultati come un array numerato da zero,
  • non puoi inserire un array, solo la stringa viene inserita,
  • non può cambiare il delimitatore durante il parsing, non può selezionare delimitatori multipli.
Supporto PHP 4 e successivi
Breve descrizione Dividere una stringa in una matrice per separatore.
Requisiti.
Nota Non può inserire un array, solo una stringa.

Spesso abbiamo bisogno di dividere una stringa secondo qualche semplice regola. Per esempio, un elenco di numeri separati da virgole.

La funzione explode() è ottima per questo, prendendo il separatore (che separa la stringa) come primo parametro e i dati stessi come secondo parametro:

$cisla = '3, 1, 4, 1, 5, 9';
$parser = explode(',', $cisla);
foreach ($parser as $cislo) {
echo $cislo . '<br>';
// Qui possiamo elaborare ulteriormente i numeri
}

Ma cosa succede se i numeri sono separati da virgole, ma ci sono spazi intorno?

La soluzione è quella di analizzare per la più piccola sottostringa comune e poi rimuovere i caratteri indesiderati intorno ad essa (spazi e altri spazi bianchi):

$cisla = '3, 1,4, 1 , 5 ,9';
$parser = explode(',', $cisla);
foreach ($parser as $cislo) {
echo trim($cislo) . '<br>';
// Qui possiamo elaborare ulteriormente i numeri
}

In questo caso, la funzione trim() rimuove elegantemente gli spazi bianchi intorno ai caratteri (spazi, tabulazioni, interruzioni di riga, ...), dando solo dati puliti.

Limite, che limita il numero di entità analizzate in un array

CONSIGLIO: Per molti esempi, explode() non è adatto ed è molto meglio usare le espressioni regolari.

Tuttavia, spesso vogliamo analizzare i dati solo fino a una certa distanza, e il terzo parametro (opzionale) limit può essere usato per questo scopo.

Per esempio, abbiamo dati strutturati separati da due punti dove vogliamo ottenere il contenuto dopo i primi due punti e ignorare gli altri due punti. Esempio:

$cas = 'formato: "j.n.Y - H:i"';

Se dovessimo analizzare la stringa solo come:

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

Otterremmo queste 3 sottostringhe (in altri casi potrebbero essercene molte di più):

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

Pertanto, impostiamo un limite a quanti elementi ottenere (ed eventualmente tutti gli altri elementi saranno aggiunti alla fine dell'ultimo elemento):

$parser = explode(':', $cas, 2);
// torna indietro:
echo $parser[0]; // formato
echo $parser[1]; // "j.n.Y - H:i"

Nota: Gli apici indesiderati possono essere rimossi dalla stringa, per esempio, usando la funzione trim():

echo trim($parser[1], '"'); // il secondo parametro specifica la mappa dei caratteri da rimuovere

Tra, ottenere una stringa tra due stringhe

Spesso abbiamo bisogno di recuperare una stringa che è delimitata da altre due stringhe. Non c'è una funzione per questo direttamente in PHP, ma possiamo scriverla noi stessi:

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

Espressioni regolari

Si può ottenere una suddivisione molto più elegante e lavorare con le stringhe usando espressioni regolari, che discuto in una pagina separata.

Funzioni simili

  • Implode() - concatenare un array in una stringa

Esempio di analisi dell'indirizzo IP

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

La variabile $ip contiene una stringa in ingresso che viene analizzata secondo il delimitatore ., il ritorno è un array. L'analisi procede fino alla fine della stringa, a meno che non sia specificato un limite.

Parametri

# Tipo Descrizione
1 string Stringa di separazione.
2 string Stringa analizzata.
3 int limite di analisi. Questo è un parametro opzionale. Esempio:

$text = 'PHP è il mio linguaggio preferito!';
$parser = explode('', $text, 1);
echo $parser[0]; // stampa la prima parola
echo $parser[1]; // stampa il resto del testo
echo $parser[2]; // non produce nulla perché è stato impostato un limite!

Valori di ritorno

Il valore di ritorno è un array con una stringa analizzata.

Gli indici sono numerati da zero a X a meno che non sia specificato un limite.

Differenze dalle versioni precedenti

Versione PHP Descrizione
5.1.0 Aggiunto il supporto per il limite negativo sui passaggi.
4.0.1 Aggiunto il parametro opzionale limit.

Suggerimenti e note

Quando si usa un limite negativo, viene dato il numero di elementi dalla fine della stringa.

Esempio:

$str = 'uno|due|tre|quattro';
// limite positivo
print_r(explode('|', $str, 2));
// limite negativo (da PHP 5.1)
print_r(explode('|', $str, -1));

Verranno restituiti i seguenti campi:

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.