5

次の文字列があるとしましょう

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

単語が始まる場所の文字列数である配列キーを使用して配列を作成するための最良の解決策は何でしょうか?

$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";
4

5 に答える 5

10

次のように簡単です。

str_word_count($str, 2);

は何str_word_count()ですか

str_word_count()— 文字列で使用されている単語に関する情報を返す

于 2013-02-05T17:24:28.600 に答える
7

オフセットを取得するための 2 番目の引数として 2 を指定したstr_word_count() ; また、単語にハイフンと文字を含めるには、おそらく3番目の引数を使用する必要があります

于 2013-02-05T17:24:05.883 に答える
3
$str = "once in a great while a good-idea turns great";
print_r(str_word_count($str, 2));

デモ: http ://sandbox.onlinephpfunctions.com/code/9e1afc68725c1472fc595b54c5f8a8abf4620dfc

于 2013-02-05T17:25:26.793 に答える
2

これを試して:

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

編集:マーク・ベイカーの答えを見たところです。おそらく私よりも良い選択肢です!

于 2013-02-05T17:24:07.960 に答える
1

preg_split(オプションで) を使用PREG_SPLIT_OFFSET_CAPTUREしてスペースで文字列を分割し、それによって得られるオフセットを使用して新しい配列を作成できます。

$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];
}
于 2013-02-05T17:24:18.980 に答える