Domanda
preg_match dà una partita. Preg_match_all riporta tutte le partite. Preg_split restituisce tutti spaccature.
Come posso dividere solo la prima partita?
Esempio:
preg_split ( "~ \ n ~", $ string);
Questo è quello che voglio:
array (0 => 'primo pezzo', 1 => 'il resto della stringa senza ulteriori suddivisioni')
Soluzione
È sufficiente impostare $ limite a 2
per 2 parti di matrice. Grazie a Ben James per menzionare:
preg_split("~\n~",$string, 2);
Ho provato e funziona bene.
L'argomento limite:
Se specificato, poi sottostringhe solo fino al limite vengono restituiti con il resto della stringa di essere immessi in ultima sottostringa. Un limite di -1, 0 o NULL significa "senza limiti" e, come è di serie su tutta PHP, è possibile utilizzare null per passare al parametro flags.
Aggiornamento:
Se è solo nuova linea che si desidera dividere:
$fp = strpos($string,"\n");
$arr = new array(substr($string,0,$fp), substr($string,$fp));
In alternativa è possibile se ti ostini a preg_split();
:
$fp = strpos($string,"\n");
$arr = preg_split("~\n~",$string,$fp);
Non c'è preg_split_once()
o equivalente.
Altri suggerimenti
Basta aggiungere il flag limite
preg_split("~\n~", $string, 2);
Se specificato, poi Sottostringhe solo fino per limitare vengono restituiti con il resto della stringa di essere immessi in ultima stringa.
Non ho un server per testare questo su. Prova:
preg_split("~\n~",$string,1);
Il 1 rappresenta il limite:
Limite: Se specificato, allora solo sottostringhe fino a limite vengono restituiti con il resto della stringa collocato nell'ultima stringa. Un limite -1, 0 o nullo significa "nessun limite" e, come è di serie su tutta PHP, è possibile utilizzare nullo per passare al parametro flags.