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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com