2013-02-05 13 views
5

Powiedz, mam następujący ciągPHP String do tablicy zamocowanej słowem rozpocząć

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

Jaki byłby najlepszym rozwiązaniem do tworzenia tablicę z kluczem tablicy jest liczba ciąg gdzie zaczyna się słowo (s) ?

$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

Czego próbowałeś? – Napolux

+3

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

+0

Dobre pytanie Będę spojrzeć –

Odpowiedz

7

str_word_count() z 2 jako drugi argument do uzyskania jak offset; a ty pewnie trzeba używać 3rd argumentu zawierać myślnik jak również litery w słowach

+0

Nie wiedziałem o tej funkcji! To fajne, że istnieje wbudowane rozwiązanie! –

+1

Znajduję od nowa w PHP prawie codziennie;) Mark, dobre uzupełnienie dotyczące argumentu 'charlist'. łącznik. – ficuscr

+0

'str_word_count ($ str, 2);' czyta 'dobry pomysł' jako jedno słowo http://codepad.org/Hhao41Y2 :-) –

2

Spróbuj tego:

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

EDIT: Właśnie zobaczyłem odpowiedź Mark Baker. Prawdopodobnie lepsza opcja niż moja!

+0

Właśnie napisałem tę odpowiedź, ale potem zobaczyłem 'str_word_count'. O wiele lepiej! –

1

Możesz użyć preg_split (z opcją PREG_SPLIT_OFFSET_CAPTURE), aby podzielić ciąg na przestrzeni, a następnie użyj przesunięcia, które pozwala utworzyć nową tablicę.

$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

tak proste, jak następuje:

str_word_count($str, 2); 

co str_word_count() robi jest

str_word_count() - Zwraca informacje o słowach używanych w ciąg

+0

Uwielbiam wbudowane funkcje PHP! Nie wiedziałem o tym :) –

+1

Nie wiedziałem o tym, ale biorąc pod uwagę to, że PHP obejmuje każde przypadkowe wymaganie, powinienem go po prostu wylogować. –

+0

+1, który jest naprawdę pomocny –