IL preg_split La funzione in PHP è utile per dividere le stringhe in base a un modello di espressione regolare. Tuttavia, una presa con preg_split è che per impostazione predefinita non viene suddiviso in più istanze del delimitatore.
Ad esempio, se hai una stringa 'ciao>>mondo' e provi a dividerla nel carattere '>' utilizzando preg_split , potresti aspettarti un array con tre elementi: 'hello', '', 'world'. Ma invece, preg_split restituisce un array con due elementi: 'ciao', 'mondo'.
Il motivo è quello preg_split vede più caratteri delimitatori uno accanto all'altro come un'unica istanza. Quindi '>>' viene trattato come un singolo > delimitatore invece di due.
Comprendere PREG_SPLIT_NO_EMPTY
Il comportamento di non dividere più delimitatori è in parte dovuto al flag PREG_SPLIT_NO_EMPTY che è abilitato per impostazione predefinita. Questa bandiera racconta preg_split per non restituire stringhe vuote nell'array dei risultati.
Quindi nell'esempio 'ciao>>mondo', se dividiamo > con PREG_SPLIT_NO_EMPTY, i due caratteri > uno accanto all'altro darebbero come risultato una stringa vuota tra di loro, che poi verrà scartata e non restituita nell'array finale.
Soluzioni
Se è necessario dividere più istanze di un delimitatore, inclusa la separazione di stringhe vuote, esistono un paio di approcci:
1. Disabilitare PREG_SPLIT_NO_EMPTY
Puoi passare il flag PREG_SPLIT_NO_EMPTY come terzo parametro per disabilitare questo comportamento:
|_+_|Ora le stringhe vuote verranno mantenute nell'array dei risultati:
|_+_|2. Utilizza invece preg_match_all
preg_match_all può anche dividere le stringhe in base a un modello regex, ma gestirà correttamente più delimitatori:
|_+_|Questo divide e mantiene il delimitatore nel gruppo di acquisizione 1:
|_+_|3. Dividi quindi filtra le stringhe vuote
Una terza opzione è restare fedeli preg_split ma filtra successivamente le stringhe vuote, se necessario:
|_+_|Altre funzioni di suddivisione delle stringhe
Esistono alcune altre funzioni di suddivisione delle stringhe che gestiscono più delimitatori in modo diverso da preg_split:
esplodere
IL esplodere la funzione divide una stringa su un delimitatore di stringa e gestisce correttamente più istanze:
|_+_|Risultato:
|_+_|str_split
str_split divide le stringhe in singoli caratteri, consentendoti di dividere qualsiasi carattere inclusi i multipli:
|_+_|Risultato:
|_+_|pezzo_diviso
pezzo_diviso divide le stringhe in parti più piccole separate da un delimitatore specificato. Buono per spezzare stringhe lunghe:
|_+_|Risultato:
|_+_|mb_split
mb_split è utile per dividere le stringhe in modo sicuro durante la gestione di caratteri multibyte.
Quando è utile Preg_Split?
Nonostante alcune stranezze, preg_split è ancora molto utile ogni volta che è necessario dividere stringhe complesse utilizzando modelli di espressioni regolari. Ad esempio:
- Suddivisione su diversi tipi di delimitatori in una stringa
- Dividere gli spazi bianchi durante la gestione di tabulazioni, spazi, ritorni a capo, ecc.
- Divisione mantenendo o rimuovendo i delimitatori
Basta essere consapevoli di come gestisce i delimitatori consecutivi e aggirare il problema disabilitando PREG_SPLIT_NO_EMPTY o utilizzando un approccio alternativo, se necessario.
Riepilogo
- preg_split per impostazione predefinita non divide le stringhe su più caratteri delimitatori a causa del flag PREG_SPLIT_NO_EMPTY.
- Le soluzioni includono la disabilitazione di PREG_SPLIT_NO_EMPTY, utilizzando preg_match_all o funzioni alternative come esplodere O str_split .
- Comprendere questo comportamento ti consente di aggirarlo quando necessario utilizzando lo strumento migliore per il tuo lavoro di suddivisione delle stringhe.
Guarda Anche:
- Le 10 migliori alternative al Bootstrap di Twitter per lo sviluppo web nel 2023
- Un semplice gestore di comandi Discord Slash per discord.py
- Come trovare facilmente i tweet cancellati di qualcuno?
- Come verificare se una variabile è un numero in JavaScript
- Installa Flutter su Windows 10 e configura Flutter Windows Desktop