有时候, 需要将 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; }