2015-05-07

PHP 解码 C 字符串

Views: 27851 | 2 Comments

有时候, 需要将 C 语言字符串字面量编码的字符串转换成其在内存中实际的值, 如果用 Python, 是有内置的函数, 但 PHP 没有, 只能写一个.

C 语言字符串字面量编码, 就是类似:

\r\n\x90

它们在内存中肯定不是这样.

完整代码如下, 需要 PHP 5.4+.

function unescape_c_str($str){
    $ret = '';
    $len = strlen($str);
    for($i=0; $i<$len; $i++){
        if($str[$i] != '\\'){
            $ret .= $str[$i];
            continue;
        }
        $i++;
        switch($str[$i]){
            case 's':
                $ret .= ' ';
                break;
            case 'a':
                $ret .= "\a";
                break;
            case 'b':
                $ret .= "\b";
                break;
            case 'f':
                $ret .= "\f";
                break;
            case 'v':
                $ret .= "\v";
                break;
            case 'r':
                $ret .= "\r";
                break;
            case 'n':
                $ret .= "\n";
                break;
            case 't':
                $ret .= "\t";
                break;
            case '\\':
                $ret .= "\\";
                break;
            case 'x':
                $hex = substr($str, $i+1, 2);
                $ret .= hex2bin($hex);
                $i += 2;
                break;
            default:
                $ret .= $str[$i];
                break;
        }
    }
    return $ret;
}

Related posts:

  1. PHP 用 curl 读取 HTTP chunked 数据
  2. 写自己的 http_build_query
  3. 史上最强大的PHP MySQL操作类
  4. Cpy是如何打败Python的
  5. 开始学习 Python
Posted by ideawu at 2015-05-07 12:51:28

2 Responses to "PHP 解码 C 字符串"

Leave a Comment