Transliterator::transliterate

transliterator_transliterate

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::transliterate -- transliterator_transliterateTransliterar una cadena

Descripción

Estilo orientado a objetos

public string Transliterator::transliterate ( string $subject [, int $start [, int $end ]] )

Estilo por procedimientos

transliterator_transliterate ( mixed $transliterator , string $subject [, int $start [, int $end ]] )

Translitera una cadena o parte de la misma utilizando el transliterador de ICU.

Parámetros

transliterator

En la versión por procedimientos, un objeto de la clase Transliterator o un string desde el cual se puede construir un objeto de la clase Transliterator.

subject

La cadena a transformar.

start

El índice de inicio (en unidades de código UTF-16) desde el cual se empezará a transformar la cadena, inclusive. La indexación comienza en 0. El texto anterior a este índice se dejará tal cual.

end

El índice final (en unidades de código UTF-16) hasta el cual será transformala la cadena, exclusive. La indexación comienza en 0. El texto posterior a este índice se dejará tal cual.

Valores devueltos

La cadena transformada en caso de éxito, o FALSE en caso de error.

Ejemplos

Ejemplo #1 Converting escaped UTF-16 code units

<?php
$s 
"\u304A\u65E9\u3046\u3054\u3056\u3044\u307E\u3059";
echo 
transliterator_transliterate("Hex-Any/Java"$s), "\n";

// ahora la operación inversa con un caráctar suplementario
$carácterSuplementario html_entity_decode('&#x1D11E;');
echo 
mb_strlen($carácter_suplementario"UTF-8"), "\n";
$carácterSuplementarioCodificado transliterator_transliterate("Any-Hex/Java"$carácter_suplementario);
// imprime dos unidades de código UTF-16 codificadas
echo $carácterSuplementarioCodificado"\n";
// y volver
echo transliterator_transliterate("Hex-Any/Java"$carácterSuplementario ), "\n";
?>

El resultado del ejemplo sería algo similar a:

お早うございます
1
\uD834\uDD1E
𝄞

Ver también

add a note add a note

User Contributed Notes 3 notes

up
6
simonsimcity at gmail dot com
1 year ago
I pretty much like the idea of hdogan, but there's at least one group of characters he's missing: ligature characters.
They're at least used in Norwegian and I read something about French, too ... Some are just used for styling (f.e. fi)

Here's an example that supports all characters (should at least, according to the documentation):
<?php
var_dump
(transliterator_transliterate('Any-Latin; Latin-ASCII; Lower()', "A æ Übérmensch på høyeste nivå! И я люблю PHP! fi"));
// string(41) "a ae ubermensch pa hoyeste niva! i a lublu php! fi"
?>

In this example any character will firstly be converted to a latin character. If that's finished, replace all latin characters by their ASCII replacement.
up
5
hdogan at gmail dot com
1 year ago
You can create slugs easily with:

<?php
function slugify($string) {
   
$string = transliterator_transliterate("Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();", $string);
   
$string = preg_replace('/[-\s]+/', '-', $string);
    return
trim($string, '-');
}

echo
slugify("Я люблю PHP!");
?>
up
1
jinmoku at hotmail dot com
3 years ago
OOP version :

<?php
$str
= 'àáâãäçèéêëìíîïñòóôõöùúûüýÿ
ÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ'
;
$rule = 'NFD; [:Nonspacing Mark:] Remove; NFC';

$myTrans = Transliterator::create($rule);
echo
$myTrans->transliterate($str);
 
//aaaaaceeeeiiiinooooouuuuyy
//AAAAACEEEEIIIINOOOOOUUUUY
?>
To Top