Шинглы

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Помогите, пожалуйста, разбить текст в переменной $text по 3 шингла на каждую тысячу символов.
 
непонятна задача

тебе разбить текст на куски по 1000 символов?
 
Если я правильно понял, то скорее-всего имелось ввиду, каждые 1000 симв. текста разбить на 3-х словные шинглы:)
 
получилось следующее
PHP:
/**
 * 
 * @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);
    
}
текст разобьётся по 1000 пробелам, только замени функциюю ГЕНЕРАЦИЯ_ШИНГЛОВ из сайта , либо подобного, реализаций генерации шинглов сейчас достаточно.
пс. писал на коленках, возможны ошибки) шинглы попадут в массив $shingl_arr, для каждого разбитого текста- новый элемент
 
Назад
Сверху