php - 如何解码十六进制内容?

标签 php

我有 $_SERVER['REDIRECT_SSL_CLIENT_S_DN'] 内容,其中包含某种十六进制数据。我该如何解码它?

$_SERVER['REDIRECT_SSL_CLIENT_S_DN'] = '../CN=\x00M\x00\xC4\x00,\x00I\x00S\x00,\x004\x000\x003\x001\x002\x000\x000\x002/SN=..';
$pattern = '/CN=(.*)\\/SN=/';
preg_match($pattern, $_SERVER['REDIRECT_SSL_CLIENT_S_DN'], $server_matches);
print_r($server_matches[1]);

结果是:

\x00M\x00\xC4\x00,\x00I\x00S\x00,\x004\x000\x003\x001\x002\x000\x000\x002

我需要的结果是:

马,IS,40312002

我尝试用chr(hexdec($value));解码它,它几乎可以工作,但在html输入中我看到很多问号。

编辑: 附加测试结果。尚未完美。数组显示一些错误:http://pastebin.com/BC4xxqmE

最佳答案

使用utf8_encode后,您现在拥有一个多字节字符串。这意味着您需要使用 PHP 的 multibyte (mb_)功能。

因此,str_split 将不再起作用。您需要将 mb_splitpreg_splitu 标志一起使用。

$splitted = preg_split('//u', $string);

这是一个演示,显示您的代码现在正在运行:http://ideone.com/nqeC0U

关于php - 如何解码十六进制内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090196/

相关文章:

php - PHP 中 i18n 的最佳方式是什么

php - 如何使服务器 header 的输出更具可读性?

php - 警告 : Illegal offset type while create dyamic menu

php - Wordpress - 查询最喜欢的作者的帖子

javascript - PHP 日期和时区

PHP PDO 准备语句语法问题

php - 简单的AJAX DataGrid显示问题

php - 在 PHP 中准备 SQLite SQL 语句

php - 使用 PHP 从 html 代码获取 Youtube 视频 ID

php - 通过 php 和 JSON 将 android 应用程序连接到 MySQL