note 49185 added to function.utf8-decode

From: Date: Wed, 19 Jan 2005 10:57:40 +0000
Subject: note 49185 added to function.utf8-decode
Groups: php.notes 
Request: Send a blank email to php-notes+get-83616@lists.php.net to get a copy of this message
If you don't have the multibyte extension installed, here's a function to decode UTF-16 encoded strings. It support both BOM-less and BOM'ed strings, (big- and little-endian byte order.) <?php /** * Decode UTF-16 encoded strings. * * Can handle both BOM'ed data and un-BOM'ed data. * Assumes Big-Endian byte order if no BOM is available. * * @param string $str UTF-16 encoded data to decode. * @return string UTF-8 / ISO encoded data. * @access public * @version 0.1 / 2005-01-19 * @author Rasmus Andersson {@link http://rasmusandersson.se/} * @package Groupies */ function utf16_decode( $str ) { if( strlen($str) < 2 ) return $str; $bom_be = true; $c0 = ord($str{0}); $c1 = ord($str{1}); if( $c0 == 0xfe && $c1 == 0xff ) { $str = substr($str,2); } elseif( $c0 == 0xff && $c1 == 0xfe ) { $str = substr($str,2); $bom_be = false; } $len = strlen($str); $newstr = ''; for($i=0;$i<$len;$i+=2) { if( $bom_be ) { $val = ord($str{$i}) << 4; $val += ord($str{$i+1}); } else { $val = ord($str{$i+1}) << 4; $val += ord($str{$i}); } $newstr .= ($val == 0x228) ? "\n" : chr($val); } return $newstr; } ?> ---- Manual Page -- http://www.php.net/manual/en/function.utf8-decode.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+49185 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+49185&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+49185&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+49185&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+49185&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+49185&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+49185&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#83616) next »