mb_decode_numericentity
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
mb_decode_numericentity — Decode HTML numeric string reference to character
Description
mb_decode_numericentity ( string $string , array $map [, string|null $encoding = null ] ) : string
Convert numeric string reference of string string
in a specified block to character.
Parameters
-
string
-
The string being decoded.
-
map
-
map
is an array that specifies the code area to convert. -
encoding
-
The
encoding
parameter is the character encoding. If it is omitted ornull
, the internal character encoding value will be used. -
is_hex
-
This parameter is not used.
Return Values
The converted string.
Changelog
Version | Description |
---|---|
8.0.0 | encoding is nullable now. |
Examples
Example #1 map
example
<?php $convmap = array ( int start_code1, int end_code1, int offset1, int mask1, int start_code2, int end_code2, int offset2, int mask2, ........ int start_codeN, int end_codeN, int offsetN, int maskN ); // Specify Unicode value for start_codeN and end_codeN // Add offsetN to value and take bit-wise 'AND' with maskN, // then convert value to numeric string reference. ?>
Example #2 map
example escapes JavaScript string
<?php function escape_javascript_string($str) { $map = [ 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,0,0, // 49 0,0,0,0,0,0,0,0,1,1, 1,1,1,1,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,1,1,1,1,1,1,0,0,0, // 99 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, // 149 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, // 199 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, // 249 1,1,1,1,1,1,1, // 255 ]; // Char encoding is UTF-8 $mblen = mb_strlen($str, 'UTF-8'); $utf32 = bin2hex(mb_convert_encoding($str, 'UTF-32', 'UTF-8')); for ($i=0, $encoded=''; $i < $mblen; $i++) { $u = substr($utf32, $i*8, 8); $v = base_convert($u, 16, 10); if ($v < 256 && $map[$v]) { $encoded .= '\\x'.substr($u, 6,2); } else if ($v == 2028) { $encoded .= '\\u2028'; } else if ($v == 2029) { $encoded .= '\\u2029'; } else { $encoded .= mb_convert_encoding(hex2bin($u), 'UTF-8', 'UTF-32'); } } return $encoded; } // Test data $convmap = [ 0x0, 0xffff, 0, 0xffff ]; $msg = ''; for ($i=0; $i < 1000; $i++) { // chr() cannot generate correct UTF-8 data larger value than 128, use mb_decode_numericentity(). $msg .= mb_decode_numericentity('&#'.$i.';', $convmap, 'UTF-8'); } // var_dump($msg); var_dump(escape_javascript_string($msg));
See Also
- mb_encode_numericentity() - Encode character to HTML numeric string reference
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.mb-decode-numericentity.php