International PHP Conference Berlin 2025

La clase IntlBreakIterator

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

Introducción

Un “iterador de ruptura” es un objeto ICU que expone métodos para localizar los límites de un texto (p.ej. límites de palabra o sentencia). La clase IntlBreakIterator de PHP sirve como la clase base para todos los tipos de iteradores de ruptura de ICU. Donde esté disponible funcionalidad extra, la extensión intl puede exponer el iterador de ruptura de ICU con subclases aptas, como IntlRuleBasedBreakIterator o IntlCodePointBreaIterator.

Esta clase implementa Traversable. Recorrer un IntlBreakIterator produce valores enteros no negativos que representan las ubicaciones sucesibas de los límites del texto, expresados como unidades de código UTF-8 (byte), tomados del inicio del texto (que tienen la ubicación 0). Las claves producidas pord el iterador simplemente forman la secuencia de números naturales {0, 1, 2, …}.

Sinopsis de la Clase

class IntlBreakIterator implements Traversable {
/* Constantes */
const integer DONE = -1;
const integer WORD_NONE = 0;
const integer WORD_NUMBER = 100;
const integer WORD_LETTER = 200;
const integer WORD_KANA = 300;
const integer WORD_IDEO = 400;
const integer LINE_SOFT = 0;
const integer LINE_HARD = 100;
const integer SENTENCE_SEP = 100;
/* Métodos */
private __construct()
public static createCharacterInstance(string $"locale" = ?): ReturnType
public static createCodePointInstance(): ReturnType
public static createLineInstance(string $"locale" = ?): ReturnType
public static createSentenceInstance(string $"locale" = ?): ReturnType
public static createTitleInstance(string $"locale" = ?): ReturnType
public static createWordInstance(string $"locale" = ?): ReturnType
public current(): ReturnType
public first(): ReturnType
public following(string $"offset"): ReturnType
public getErrorCode(): ReturnType
intl_get_error_code(): ReturnType
public getErrorMessage(): ReturnType
intl_get_error_message(): ReturnType
public getLocale(string $"locale_type"): ReturnType
public getPartsIterator(string $"key_type" = ?): ReturnType
public getText(): ReturnType
public isBoundary(string $"offset"): ReturnType
public last(): ReturnType
public next(string $"offset" = ?): ReturnType
public preceding(string $"offset"): ReturnType
public previous(): ReturnType
public setText(string $"text"): ReturnType
}

Tabla de contenidos

add a note

User Contributed Notes 1 note

up
12
SenseException
11 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