IntlBreakIterator クラス

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

はじめに

“break iterator” は、 テキスト中のどこに境界 (たとえば、単語や文章の境目) が位置するのかに関するメソッドを公開しています。 PHP の IntlBreakIterator は、 全ての break iterator の基底クラスになります。 追加の機能が利用可能な場合は、 intl 拡張機能は適切なサブクラスを公開しています。 たとえば、 IntlRuleBasedBreakIteratorIntlCodePointBreakIterator です。

このクラスは、 Traversable も実装しています。 IntlBreakIterator を走査すると、 テキストに存在する連続する境界を示す、 負でない整数値を返します。 これは、UTF-8 のコード単位(バイト) の数として表現され、 テキストの最初 (これは、位置 0 になります) から取得されます。 イテレータによって返されるキーは、 {0, 1, 2, …} のように、自然数の順序に並びます。

クラス概要

class 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 = null): ?IntlBreakIterator
public static createLineInstance(?string $locale = null): ?IntlBreakIterator
public static createSentenceInstance(?string $locale = null): ?IntlBreakIterator
public static createTitleInstance(?string $locale = null): ?IntlBreakIterator
public static createWordInstance(?string $locale = null): ?IntlBreakIterator
public current(): int
public first(): int
public following(int $offset): int
public getErrorCode(): int
intl_get_error_code(): int
public getErrorMessage(): string|false
intl_get_error_message(): string
public getLocale(int $type): string
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
}

定義済み定数

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
7
SenseException
7 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