2013-02-05 18 views
5

Ben aşağıdaki dizeyi var ki başlatmakPHP Dize

kelime (ler) başladığı dize sayısı olmak dizisi anahtarla bir dizi yaratmak için en iyi çözüm ne olurdu
$str = "once in a great while a good-idea turns great"; 

? 2 ile

$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

Ne denediniz? – Napolux

+3

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

+0

iyi soru Ben bir göz atacağım –

cevap

7

str_word_count() elde etmek için ikinci bir değişken olarak ofset

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

EDIT: ve muhtemelen

+0

Bu fonksiyon hakkında bilmiyordum! Yerleşik bir çözümün olması harika! –

+1

PHP'de neredeyse her gün yeni bir tane buluyorum;) Mark, 'charlist' argümanıyla ilgili iyi bir ekleme. kısa çizgi. – ficuscr

+0

'str_word_count ($ str, 2);' tek kelimeyle iyi fikir okur http://codepad.org/Hhao41Y2 :-) –

2

bu deneyin deyişle tire yanı sıra harfleri de 3 argüman kullanmanız gerekir Sadece Mark Baker cevabı gördü. Muhtemelen benimkinden daha iyi bir seçenek!

+0

Sadece bu cevabı da yayınladım, ama sonra str_word_count'unu gördüm. Bu çok daha iyi! –

1

preg_split (PREG_SPLIT_OFFSET_CAPTURE seçeneğiyle) alanını boşlukta bölmek için kullanın, ardından yeni bir dizi oluşturmanıza olanak tanıyan ofseti kullanın. Aşağıdaki şekilde

$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

kadar basit: str_word_count() ne

str_word_count($str, 2); 

str_word_count() - bir dize

+0

Yerleşik PHP işlevlerine bayılıyorum! Bunu bilmedim :) –

+1

Bunun hakkında bir şey bilmiyordum, ama PHP'nin her bir rastgele ihtiyacı karşıladığını düşündüm. –

+0

+1 bu gerçekten yararlı –