Разделение строки на равные части

$str =  "Hello fri3nd, you're looking good today!  What a Great day this is!  How     fancy and cool!";
$pieces = explode(" ",$str, 3);

print_r($pieces);

так что это дает мне $pieces[0] = 'Hello',$pieces[1] = 'fri3nd'... and the rest of the string is all shoved into$pieces[3]`. Как я могу взорваться на каждые 3 или 4 слова?


person ionfish    schedule 30.05.2011    source источник
comment
В заголовке вы спрашиваете о равных частях, в вопросе вы спрашиваете о каждых 3 или 4 словах. Какой из них и как вы хотите, чтобы он работал точно?   -  person Pekka    schedule 30.05.2011
comment
Можете ли вы объяснить немного больше о ваших требованиях и ситуации? Почему вы хотите разделить на 3 или 4 слова? если вы можете объяснить ваше требование, мы можем указать лучшее решение.   -  person Vijay    schedule 30.05.2011
comment
Возможный дубликат stackoverflow.com/questions/857441/ и stackoverflow.com/questions/840807/   -  person Till    schedule 30.05.2011


Ответы (2)


Может быть:?

<?php
$str =  "Hello fri3nd, you're looking good today!  What a Great day this is!  How     fancy and cool!";

$array = array_map(create_function('$a', 'return implode(" ", $a);'), array_chunk(preg_split('/\s+/', $str), 3));
var_dump($array);

Объяснение:

  • сначала вы разделяете строку на любой (комбинированный) пробел: preg_split
  • затем "разделить" полученный массив: array_chunk
  • затем вы применяете implode, используя array_map для любой полученной группы слов
person Yoshi    schedule 30.05.2011
comment
ничего себе .. кажется, это работает .. но могу ли я получить объяснение того, что происходит? его так много функций слились воедино! - person ionfish; 30.05.2011
comment
Все еще кажется, что я слишком тупой, чтобы понять все, что здесь происходит.. но я действительно ценю это, тем не менее - person ionfish; 30.05.2011
comment
Зачем использовать регулярное выражение там, где можно использовать и explode(' ',? Explode быстрее. - person Matthieu Napoli; 30.05.2011
comment
@Matthieu, потому что вы, возможно, получите пустые записи массива (см. Много пробелов в конце строки) - person Yoshi; 30.05.2011
comment
Кто бы ни проголосовал за это, не могли бы вы объяснить свою мотивацию? - person Yoshi; 09.06.2011

Используйте функцию php str_split:

$pieces = str_split( $str, 3);
person Salman von Abbas    schedule 30.05.2011
comment
что не делится по словам. он просто разбивает все на части. взрывать расщепления по словам, но я не могу выбрать способ их взрыва. - person ionfish; 30.05.2011