首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mb_decode_numericentity

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

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

描述

代码语言:javascript
复制
string mb_decode_numericentity ( string $str , array $convmap [, string $encoding = mb_internal_encoding() ] )

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

参数

str

正在解码的字符串。

convmap

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

encoding

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

返回值

转换后的字符串。

示例

示例#1 convmap 示例

代码语言:javascript
复制
<?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 字符串

代码语言: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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com