Класс IntlBreakIterator

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

Введение

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

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

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

IntlBreakIterator implements Traversable {
/* Константы */
const int DONE = -1 ;
const int WORD_NONE = 0 ;
const int WORD_NONE_LIMIT = 100 ;
const int WORD_NUMBER = 100 ;
const int WORD_NUMBER_LIMIT = 200 ;
const int WORD_LETTER = 200 ;
const int WORD_LETTER_LIMIT = 300 ;
const int WORD_KANA = 300 ;
const int WORD_KANA_LIMIT = 400 ;
const int WORD_IDEO = 400 ;
const int WORD_IDEO_LIMIT = 500 ;
const int LINE_SOFT = 0 ;
const int LINE_SOFT_LIMIT = 100 ;
const int LINE_HARD = 100 ;
const int LINE_HARD_LIMIT = 200 ;
const int SENTENCE_TERM = 0 ;
const int SENTENCE_TERM_LIMIT = 100 ;
const int SENTENCE_SEP = 100 ;
const int SENTENCE_SEP_LIMIT = 200 ;
/* Методы */
private __construct()
public static createCharacterInstance(string $locale = ?): IntlBreakIterator
public static createLineInstance(string $locale = ?): IntlBreakIterator
public static createSentenceInstance(string $locale = ?): IntlBreakIterator
public static createTitleInstance(string $locale = ?): IntlBreakIterator
public static createWordInstance(string $locale = ?): IntlBreakIterator
public current(): int
public first(): int
public following(int $offset): int
public getErrorCode(): int
intl_get_error_code(): int
public getErrorMessage(): string
intl_get_error_message(): string
public getLocale(string $locale_type): string
public getPartsIterator(int $key_type = IntlPartsIterator::KEY_SEQUENTIAL): IntlPartsIterator
public getText(): string
public isBoundary(int $offset): bool
public last(): int
public next(int $offset = ?): int
public preceding(int $offset): int
public previous(): int
public setText(string $text): bool
}

Предопределённые константы

IntlBreakIterator::DONE

IntlBreakIterator::WORD_NONE

IntlBreakIterator::WORD_NONE_LIMIT

IntlBreakIterator::WORD_NUMBER

IntlBreakIterator::WORD_NUMBER_LIMIT

IntlBreakIterator::WORD_LETTER

IntlBreakIterator::WORD_LETTER_LIMIT

IntlBreakIterator::WORD_KANA

IntlBreakIterator::WORD_KANA_LIMIT

IntlBreakIterator::WORD_IDEO

IntlBreakIterator::WORD_IDEO_LIMIT

IntlBreakIterator::LINE_SOFT

IntlBreakIterator::LINE_SOFT_LIMIT

IntlBreakIterator::LINE_HARD

IntlBreakIterator::LINE_HARD_LIMIT

IntlBreakIterator::SENTENCE_TERM

IntlBreakIterator::SENTENCE_TERM_LIMIT

IntlBreakIterator::SENTENCE_SEP

IntlBreakIterator::SENTENCE_SEP_LIMIT

Содержание

add a note add a note

User Contributed Notes 1 note

up
6
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