IntlBreakIterator クラス
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
はじめに
“break iterator” は、 テキスト中のどこに境界 (たとえば、単語や文章の境目) が位置するのかに関するメソッドを公開しています。 PHP の IntlBreakIterator は、 全ての break iterator の基底クラスになります。 追加の機能が利用可能な場合は、 intl 拡張モジュールは適切なサブクラスを公開しています。 たとえば、 IntlRuleBasedBreakIterator や IntlCodePointBreakIterator です。
このクラスは、
IteratorAggregate も実装しています。
IntlBreakIterator を走査すると、
テキストに存在する連続する境界を示す、
負でない整数値を返します。
これは、UTF-8 のコード単位(バイト) の数として表現され、
テキストの最初
(これは、位置 0
になります) から取得されます。
イテレータによって返されるキーは、
{0, 1, 2, …}
のように、自然数の順序に並びます。
クラス概要
定義済み定数
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
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | IntlBreakIterator は、 IteratorAggregate を実装しました。 これより前のバージョンでは、 Traversable を代わりに実装していました。 |
目次
- IntlBreakIterator::__construct — インスタンス化を禁止するためのprivateなコンストラクタ
- IntlBreakIterator::createCharacterInstance — 文字シーケンスの組み合わせの境界用にイテレータを作る
- IntlBreakIterator::createCodePointInstance — コードポイントの境界用にイテレータを作る
- IntlBreakIterator::createLineInstance — 論理的に可能な改行用にイテレータを作る
- IntlBreakIterator::createSentenceInstance — 文末用にイテレータを作る
- IntlBreakIterator::createTitleInstance — タイトル文字の区切り用にイテレータを作る
- IntlBreakIterator::createWordInstance — 単語の区切り用にイテレータを作る
- IntlBreakIterator::current — 現在位置のインデックスを取得する
- IntlBreakIterator::first — テキスト内の最初の文字を場所を取得する
- IntlBreakIterator::following — 指定したオフセット以降の最初の境界までイテレータを進める
- IntlBreakIterator::getErrorCode — このオブジェクトの直近のエラーコードを取得する
- IntlBreakIterator::getErrorMessage — このオブジェクトの直近のエラーメッセージを取得する
- IntlBreakIterator::getLocale — このオブジェクトに関連づけられたロケールを取得する
- IntlBreakIterator::getPartsIterator — 境界と境界の間の navigating fragments 用にイテレータを作る
- IntlBreakIterator::getText — スキャンするテキストを取得する
- IntlBreakIterator::isBoundary — あるオフセットが境界のオフセットかどうかを調べる
- IntlBreakIterator::last — イテレータの位置を、最後の文字より後に設定する
- IntlBreakIterator::next — イテレータを次の境界まで進める
- IntlBreakIterator::preceding — イテレータの位置を、指定したオフセット以前の最初の境界に設定する
- IntlBreakIterator::previous — イテレータの位置を、現在位置の直前の境界に設定する
- IntlBreakIterator::setText — スキャンするテキストを設定する
+add a note
User Contributed Notes 1 note
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 -----