php 如何循环截取字符串中的16进制数据替换为10进制

$str='SelectName:dataNS[0x6b]})$(dataNS[0x6e])[dataNS[0x67]]({SelectName:dataNS[0x6d]})ikan[dataNS[0xbf]][dataNS[0xc1]]());ikan[dataNS[0xc2]]();ikan[dataNS[0xc3]]();ikan[dataNS[0xc4]]();ikan.Search();ikan[dataNS[0xc5]]();ikan[dataNS[0xc6]]();ikan[dataNS[0xc7]]();ikan[dataNS[0xc8]]();ikan[dataNS[0xc9]][dataNS[0x94]]();ikan[dataNS[0xc9]][dataNS[0x9b]]();ikan[dataNS[0xca]]();ikan[dataNS[0xcb]]();ikan[dataNS[0xcc]]';
//$str串中的[dataNS[字符串]实际为16进制,我如何用php全部替换为对应10进制,
//我自己想到的是先循环获取dataNS[到]的字符存入数组,然后在遍历这数组的将值循环转坏为10进制
//现在天要亮了,搞不定了,高手帮帮忙
阅读 1.8k
1 个回答
<?php
$str='SelectName:dataNS[0x6b]})$(dataNS[0x6e])[dataNS[0x67]]({SelectName:dataNS[0x6d]})ikan[dataNS[0xbf]][dataNS[0xc1]]());ikan[dataNS[0xc2]]();ikan[dataNS[0xc3]]();ikan[dataNS[0xc4]]();ikan.Search();ikan[dataNS[0xc5]]();ikan[dataNS[0xc6]]();ikan[dataNS[0xc7]]();ikan[dataNS[0xc8]]();ikan[dataNS[0xc9]][dataNS[0x94]]();ikan[dataNS[0xc9]][dataNS[0x9b]]();ikan[dataNS[0xca]]();ikan[dataNS[0xcb]]();ikan[dataNS[0xcc]]';

function hex2dec($matches){
    var_dump($matches);
    return "dataNS[".hexdec($matches[1])."]";
}
echo preg_replace_callback("/dataNS\[0x([0-9a-z]+)\]/", hex2dec, $str);

拿走不谢!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题