PHP взорвать любое другое слово с изюминкой? - PullRequest
1 голос
/ 13 мая 2009

Дубликат: Взрываться над каждым другим словом

$string = "This is my test case for an example."

Если я взорвусь, основываясь на ' ', я получу

Array('This','is','my','test','case','for','an','example.');

То, что я хочу, это взрыв для любого другого пространства.

Я ищу следующий вывод:

Array( 

[0] => Array ( 

[0] => This is
[1] => is my
[2] => my test
[3] => test case 
[4] => case for 
[5] => for example. 

)

так что в основном выводятся все 2 фразы.

Кто-нибудь знает решение ????

Ответы [ 6 ]

3 голосов
/ 13 мая 2009

это обеспечит вывод, который вы ищете

$string = "This is my test case for an example.";
$tmp = explode(' ', $string);
$result = array();
//assuming $string contains more than one word
for ($i = 0; $i < count($tmp) - 1; ++$i) {
    $result[$i] = $tmp[$i].' '.$tmp[$i + 1];
}
print_r($result);

Завернуто в функцию:

function splitWords($text, $cnt = 2) 
{
    $words = explode(' ', $text);

    $result = array();

    $icnt = count($words) - ($cnt-1);

    for ($i = 0; $i < $icnt; $i++)
    {
        $str = '';

        for ($o = 0; $o < $cnt; $o++)
        {
            $str .= $words[$i + $o] . ' ';
        }

        array_push($result, trim($str));
    }

    return $result;
}
2 голосов
/ 13 мая 2009

Альтернативой, использующей «погоню за указателями», будет этот фрагмент.

$arr = explode( " ", "This is an example" );
$result = array();

$previous = $arr[0];
array_shift( $arr );
foreach( $arr as $current ) {
    $result[]=$previous." ".$current;
    $previous = $current;
}

echo implode( "\n", $result );

Всегда забавно не нуждаться в индексах и счетчиках, но оставить все эти внутренние репрезентативные вещи для метода foreach (или array_map, или тому подобное).

1 голос
/ 13 мая 2009

Краткое решение без циклов (и переменного количества слов):

    function splitStrByWords($sentence, $wordCount=2) {
        $words = array_chunk(explode(' ', $sentence), $wordCount);
        return array_map('implode', $words, array_fill(0, sizeof($words), ' '));
    }
0 голосов
/ 22 мая 2014
  $content="This is my test case for an example";
  $tmp=explode(" ",$content);
  $text = array();
  $b=0;
  for ($i = 0; $i < count($tmp)/2; $i++) {
      $text[$i] = $tmp[$b].' '.$tmp[$b + 1];
      $b++;
  $b++;
  }
  print_r($text);
0 голосов
/ 13 мая 2009
$arr = explode($string);
$arr2 = array();
for ( $i=0; $i<size($arr)-1; $i+=2 ) {
    $arr2[] = $arr[i].' '.$arr[i+1];
}
if ( size($arr)%2==1 ) {
    $arr2[] = $arr[size($arr)-1];
}

$ arr2 - это решение.

0 голосов
/ 13 мая 2009

На ум приходят два быстрых варианта: разбить каждое слово и собрать пары, использовать регулярное выражение для разбиения строки вместо взрыва ().

...