mb_strrev - Multibyte-String umkehren

Februar 2011

PHP, bzw. dessen Multibyte-Extension, stellt keine Funktion zu Verfügung, mit welcher man die Zeichen in Strings umdrehen kann, sodass das erste Zeichen am Ende und das letzte Zeichen am Anfang steht.

Bei Single-Byte-Strings, wie man sie unter ASCII oder ISO-8859 hat, lässt sich die Funktion strrev() benutzen, aber UTF-8-Texte werden dadurch "zerschossen".

Mit folgendem Einzeiler lassen sich allerdings alle Zeichenketten umdrehen, egal in welcher Kodierung sie sind:
<?php
function mb_strrev($str$encoding='UTF-8'){
    return 
mb_convert_encodingstrrevmb_convert_encoding($str'UTF-16BE'$encoding) ), $encoding'UTF-16LE');
}
?>

Beispiel-Anwendung:
<?php
$str 
'Rückwärts!';
echo 
mb_strrev($str'UTF-8');
// Ergibt: !sträwkcüR
?>

Der Trick liegt darin, den String nach UTF-16 Big Endian zu codieren. Wenn man strrev() auf UTF-16 Big Endian anwendet, erhält man einen String in der Kodierung UTF-16 Little Endian, welchen man dann wieder in die ursprüngliche Kodierung umwandeln kann.
 


Andere Einträge