2013-02-05 11 views
5

Say Ho la seguente stringaPHP stringa in una matrice calettato per parola avviare

$str = "once in a great while a good-idea turns great"; 

Quale sarebbe la soluzione migliore per la creazione di una matrice con la chiave dell'array è il numero di stringhe da cui la parola (s) inizia ?

$str_array['0'] = "once"; 
$str_array['5'] = "in"; 
$str_array['8'] = "a"; 
$str_array['10'] = "great"; 
$str_array['16'] = "while"; 
$str_array['22'] = "a"; 
$str_array['24'] = "good-idea"; 
$str_array['34'] = "turns"; 
$str_array['40'] = "great"; 
+0

Cosa hai provato? – Napolux

+3

http://php.net/manual/en/function.str-word-count.php – ficuscr

+0

buona domanda darò un'occhiata a –

risposta

7

str_word_count() con 2 come secondo argomento per ottenere l'offset; e si sarebbe probabilmente necessario utilizzare il terzo argomento per includere trattino come pure le lettere in parole

+0

Non sapevo di questa funzione! È bello che ci sia una soluzione integrata! –

+1

Ne trovo uno in PHP quasi ogni giorno;) Mark, buona aggiunta per l'argomento 'charlist' re. il trattino. – ficuscr

+0

'str_word_count ($ str, 2);' legge 'buona idea' come una parola http://codepad.org/Hhao41Y2 :-) –

2

Prova questa:

$array = preg_split("/ /",$str,-1,PREG_SPLIT_OFFSET_CAPTURE); 
$str_array = Array(); 
foreach($array as $word) $str_array[$word[1]] = $word[0]; 

EDIT: Ho appena visto la risposta di Mark Baker. Probabilmente un'opzione migliore della mia!

+0

Ho appena postato anche questa risposta, ma poi ho visto 'str_word_count'. È molto meglio! –

1

È possibile utilizzare preg_split (con l'opzione PREG_SPLIT_OFFSET_CAPTURE) per suddividere la stringa nello spazio, quindi utilizzare l'offset che fornisce per creare un nuovo array.

$str = "once in a great while a good-idea turns great"; 
$split_array = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE); 

$str_array = array(); 

foreach($split_array as $split){ 
    $str_array[$split[1]] = $split[0]; 
} 
10

Semplice come il seguente:

str_word_count($str, 2); 

quello str_word_count() fa è

str_word_count() - Restituisce informazioni sulle parole utilizzate in una stringa

+0

Devi amare le funzioni PHP integrate! Non sapevo di questo :) –

+1

Non lo sapevo, ma dato che PHP copre ogni requisito casuale avrei dovuto cercarlo su Google. –

+0

+1 che è davvero utile –

Problemi correlati