xInOrK
Новичок
Не получается решить проблему с ssl, regex, iconv
Получаю данные из сертификата в таком виде:
1) CN=\x00J\x00E\x00R\x01`\x00O\x00V\x00A\x00,\x00V\x00E\x00R\x00O\x00N\x00I\x00K\x00A\x00,\x004\x009\x000\x000\x009\x001\x004\x002\x002\x001\x004/SN=\x00J\x00E\x00R\x01`\x00O\x00V\x00A
2) CN=\x00K\x00R\x00\xD5\x00L\x00O\x00V\x00,\x00P\x00A\x00V\x00E\x00L\x00,\x003\x008\x007\x000\x004\x000\x009\x006\x005\x002\x009/SN=\x00K\x00R\x00\xD5\x00L\x00O\x00V
написал сначала небольшой скриптик он наверно ужасный но подругому пока не придумал как сделать.
но и с ним возникла проблема, второй результат он обрабатывает хорошо а первый нет. Может подскажите как сделать это всё проще. Ну или хотябы ткнёте в то что надо почитать.
-~{}~ 25.02.09 22:51:
нашёл такой код:
который решил проблему
Получаю данные из сертификата в таком виде:
1) CN=\x00J\x00E\x00R\x01`\x00O\x00V\x00A\x00,\x00V\x00E\x00R\x00O\x00N\x00I\x00K\x00A\x00,\x004\x009\x000\x000\x009\x001\x004\x002\x002\x001\x004/SN=\x00J\x00E\x00R\x01`\x00O\x00V\x00A
2) CN=\x00K\x00R\x00\xD5\x00L\x00O\x00V\x00,\x00P\x00A\x00V\x00E\x00L\x00,\x003\x008\x007\x000\x004\x000\x009\x006\x005\x002\x009/SN=\x00K\x00R\x00\xD5\x00L\x00O\x00V
написал сначала небольшой скриптик он наверно ужасный но подругому пока не придумал как сделать.
PHP:
$value=str_replace("\\x00", "", $value);
$value=str_replace("\\x", "0x", $value);
$value=preg_replace_callback('/0x([0-9a-zA-Z]){2}/', create_function('$matches', '$hex=str_replace("0x", "", $matches[0]); return chr(hexdec("$hex"));'), $value);
$value=iconv("ISO-8859-1", "UTF-8", $value);
-~{}~ 25.02.09 22:51:
нашёл такой код:
PHP:
function ucs2utf8($str) {
$str=preg_replace("/\\\\x([0-9ABCDEF]{1,2})/e", "chr(hexdec('\\1'))", $str);
$result=null;
$encoding=mb_detect_encoding($str, "ASCII, UCS2, UTF8");
if ($encoding == "ASCII") {
$result=mb_convert_encoding($str, "UTF-8", "ASCII");
} else {
if (substr_count($str,chr(0)) > 0) {
$result=mb_convert_encoding($str, "UTF-8", "UCS2");
} else {
$result=$str;
}
}
return $result;
}