PHP

mb_decode_numericentity

mb_decode_numericentity

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_decode_numericentity - 将 HTML 数字字符串引用解码为字符

描述

string mb_decode_numericentity ( string $str , array $convmap [, string $encoding = mb_internal_encoding() ] )

将指定块中str字符串的数字字符串引用转换为字符。

参数

str

正在解码的字符串。

convmap

convmap 是一个数组,指定要转换的代码区域。

encoding

encoding参数是字符编码。如果省略,则使用内部字符编码值。

返回值

转换后的字符串。

示例

示例#1 convmap 示例

<?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. ?>

示例#2 convmap示例转义 JavaScript 字符串

<?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)

也可以看看

  • mb_encode_numericentity() - 将字符编码为 HTML 数字字符串参考

← mb_decode_mimeheader

mb_detect_encoding →