Usando preg_split per passare da 'ciao come stai' a [ciao, come stai]
Domanda
Voglio dividere una stringa in due parti, la stringa è quasi testo libero, ad esempio:
$string = 'hi how are you';
e voglio che la divisione sia simile a questa:
array(
[0] => hi
[1] => how are you
)
Ho provato a usare questo regex: /(\S*)\s*(\.*)/
ma anche quando l'array restituito ha le dimensioni corrette, i valori diventano vuoti.
Quale dovrebbe essere lo schema necessario per far funzionare tutto questo?
Soluzione
Quali sono i requisiti? Il tuo esempio sembra piuttosto arbitrario. Se tutto ciò che vuoi è dividere il primo spazio e lasciare solo il resto della stringa, lo farebbe usando esplodere
:
$pieces = explode(' ', 'hi how are you', 2);
Che sostanzialmente dice "dividi sugli spazi e limita l'array risultante a 2 elementi"
Altri suggerimenti
Non dovresti sfuggire a ". " nell'ultimo gruppo. Stai cercando di abbinare qualsiasi personaggio, non un periodo letterale.
Corretto: /(\S*)\s*(.*)/