/**
*
* @param <type> $txt исходный текст
* @param <type> $el строка, по которой будем разбивать текст
* @param <type> $num сколько вхождений нужно взять
* @param <type> $_pos с какого символа начинать
* @return array массив с 2-мя элементами,
* [0] - текст обрезаняй по $num вхождений
* [1] - текст оставшийся после $num вхождений
*/
function searchElement($txt, $el, $num, $_pos =0) {
if (substr_count($txt, $el) < $num) {
return array($txt, null);
}
$n = 0;
while ($n < $num) {
$_pos = strpos($txt, $el, $_pos + 1);
$n++;
}
if (!$_pos) {
return array($txt, null);
}
//var_dump($n, $_pos);
return array(substr($txt, 0, $_pos), trim(substr($txt, $_pos)));
}
$txt = 'Текст';
$n_txt = $txt;
$shingl_arr = array();
while ($n_txt) {
list($strip_txt, $n_txt) = searchElement($n_txt, ' ', 1000);
$shingl_arr[] = ГЕНЕРАЦИЯ_ШИНГЛОВ($strip_txt);
}