转载

PHP 解码 C 字符串

有时候, 需要将 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 '/'':     $ret .= "/'";     break;    case '/"':     $ret .= "/"";     break;    case '/?':     $ret .= "?";     break;    case 'x':     $hex = substr($str, $i+1, 2);     $ret .= hex2bin($hex);     $i += 2;     break;    default:   }  }  return $ret; } 
正文到此结束
Loading...