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

str_word_count()以 2 作为第二个参数来获取偏移量;并且您可能需要使用第三个参数来包含连字符以及单词中的字母

于 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 回答