2809 |
rexy |
1 |
<?php
|
|
|
2 |
/**
|
|
|
3 |
* Smarty shared plugin
|
|
|
4 |
*
|
|
|
5 |
* @package Smarty
|
|
|
6 |
* @subpackage PluginsShared
|
|
|
7 |
*/
|
|
|
8 |
/**
|
|
|
9 |
* convert characters to their decimal unicode equivalents
|
|
|
10 |
*
|
|
|
11 |
* @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
|
|
|
12 |
*
|
|
|
13 |
* @param string $string characters to calculate unicode of
|
|
|
14 |
* @param string $encoding encoding of $string, if null mb_internal_encoding() is used
|
|
|
15 |
*
|
|
|
16 |
* @return array sequence of unicodes
|
|
|
17 |
* @author Rodney Rehm
|
|
|
18 |
*/
|
|
|
19 |
function smarty_mb_to_unicode($string, $encoding = null)
|
|
|
20 |
{
|
|
|
21 |
if ($encoding) {
|
|
|
22 |
$expanded = mb_convert_encoding($string, 'UTF-32BE', $encoding);
|
|
|
23 |
} else {
|
|
|
24 |
$expanded = mb_convert_encoding($string, 'UTF-32BE');
|
|
|
25 |
}
|
|
|
26 |
return unpack('N*', $expanded);
|
|
|
27 |
}
|
|
|
28 |
|
|
|
29 |
/**
|
|
|
30 |
* convert unicodes to the character of given encoding
|
|
|
31 |
*
|
|
|
32 |
* @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
|
|
|
33 |
*
|
|
|
34 |
* @param integer|array $unicode single unicode or list of unicodes to convert
|
|
|
35 |
* @param string $encoding encoding of returned string, if null mb_internal_encoding() is used
|
|
|
36 |
*
|
|
|
37 |
* @return string unicode as character sequence in given $encoding
|
|
|
38 |
* @author Rodney Rehm
|
|
|
39 |
*/
|
|
|
40 |
function smarty_mb_from_unicode($unicode, $encoding = null)
|
|
|
41 |
{
|
|
|
42 |
$t = '';
|
|
|
43 |
if (!$encoding) {
|
|
|
44 |
$encoding = mb_internal_encoding();
|
|
|
45 |
}
|
|
|
46 |
foreach ((array)$unicode as $utf32be) {
|
|
|
47 |
$character = pack('N*', $utf32be);
|
|
|
48 |
$t .= mb_convert_encoding($character, $encoding, 'UTF-32BE');
|
|
|
49 |
}
|
|
|
50 |
return $t;
|
|
|
51 |
}
|