CakeFest 2024: The Official CakePHP Conference

Класс IntlBreakIterator

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Введение

Итератор прерывания (Break iterator) - это объект ICU предоставляющий методы для определения границ в тексте (например границы слова или предложения). В PHP класс IntlBreakIterator служит базовым классом для всех типов итераторов прерывания ICU. Есть и дополнительная функциональность, модуль intl может расширять этот класс подходящими подклассами, такими как IntlRuleBasedBreakIterator или IntlCodePointBreakIterator.

Этот класс реализует интерфейс IteratorAggregate. Traversing an Итерация IntlBreakIterator порождает неотрицательные целые значения, представляющие из себя успешное нахождение границ в тексте, и равные позиции найденного символа UTF-8 отсчитанной от начала текста (позиция первого символа равна 0). Ключи возвращённых значений представляют из себя последовательность натуральных чисел {0, 1, 2, …}.

Обзор классов

class IntlBreakIterator implements IteratorAggregate {
/* Константы */
public const int DONE;
public const int WORD_NONE;
public const int WORD_NONE_LIMIT;
public const int WORD_NUMBER;
public const int WORD_NUMBER_LIMIT;
public const int WORD_LETTER;
public const int WORD_LETTER_LIMIT;
public const int WORD_KANA;
public const int WORD_KANA_LIMIT;
public const int WORD_IDEO;
public const int WORD_IDEO_LIMIT;
public const int LINE_SOFT;
public const int LINE_SOFT_LIMIT;
public const int LINE_HARD;
public const int LINE_HARD_LIMIT;
public const int SENTENCE_TERM;
public const int SENTENCE_TERM_LIMIT;
public const int SENTENCE_SEP;
public const int SENTENCE_SEP_LIMIT;
/* Методы */
private __construct()
public current(): int
public first(): int
public following(int $offset): int
public getErrorCode(): int
public getLocale(int $type): string|false
public getPartsIterator(string $type = IntlPartsIterator::KEY_SEQUENTIAL): IntlPartsIterator
public getText(): ?string
public isBoundary(int $offset): bool
public last(): int
public next(?int $offset = null): int
public preceding(int $offset): int
public previous(): int
public setText(string $text): bool
}

Список изменений

Версия Описание
8.0.0 Класс IntlBreakIterator теперь реализует интерфейс IteratorAggregate. Ранее вместо этого был реализован интерфейс Traversable.

Содержание

add a note

User Contributed Notes 1 note

up
12
SenseException
10 years ago
Since there is no excample for the usage of the IntlBreakIterator yet, I made a small one:

<?php

$text
= "Si contano i danni. Un morto a Roma, un treno ".
"deragliato e quattro feriti a Foggia, strade chiuse in tutto ".
"il sud, allagamenti e danni sulla costa ionica. A Pescara, ".
"1.500 sfollati per l'esondazione del Fosso Vallelunga. ".
"Dall'inizio dell'anno l'agricoltura ha subito un miliardo ".
"di euro di danni.";

$locale = 'it_IT';

$i = IntlBreakIterator::createSentenceInstance($locale);
$i->setText($text);

foreach(
$i->getPartsIterator() as $sentence) {
echo
$sentence . PHP_EOL . '----- next -----' . PHP_EOL;
}

?>

Result:

Si contano i danni.
----- next -----
Un morto a Roma, un treno deragliato e quattro feriti a Foggia, strade chiuse in tutto il sud, allagamenti e danni sulla costa ionica.
----- next -----
A Pescara, 1.500 sfollati per l'esondazione del Fosso Vallelunga.
----- next -----
Dall'inizio dell'anno l'agricoltura ha subito un miliardo di euro di danni.
----- next -----
To Top