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')

È stato utile?

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);

manuale

  

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top