打印编码的字符串

时间:2011-12-27 19:39:52

标签: php cakephp

我正在查看这个问题(Is this a CakePHP hacking of some kind?),当我查看代码时,我看到了这一行:

$wp_cw_kses_split = '>=^/E]u*PDAF$!V'^']O;N18*L%*"2MN8';

当我回应这个时,它回声create_function

这是如何工作的?我的意思是,即使是一个字符串怎么样?其中有未转义的'

演示:http://ideone.com/rk2Og

3 个答案:

答案 0 :(得分:3)

这是对字符串的按位XOR运算,这意味着字符的ascii值是异或的。 Manual Example 2

您有两个不同的字符串: >=^/E]u*PDAF$!V]O;N18*L%*"2MN8

答案 1 :(得分:3)

它正在对两个字符串'>=^/E]u*PDAF$!V'']O;N18*L%*"2MN8'执行按位XOR运算。

var_dump('>' ^ ']'); // string(1) "c"
var_dump('=' ^ 'O'); // string(1) "r"
var_dump('^' ^ ';'); // string(1) "e"
// ... etc

按位XOR操作是在字符的ASCII码上完成的,所以对于第一个,

">" = 62 (ASCII) = 0111110
 ^  = XOR          -------
"]" = 93 (ASCII) = 1011101
==========================
"c" = 99 (ASCII) = 1100011

答案 2 :(得分:2)

这是一个表达式,两个字符串的操作:

       1: '>=^/E]u*PDAF$!V'
operator: ^ - bitwise XOR
       2: ']O;N18*L%*"2MN8'

正如您所看到的,'并非“未转义”,但这是故意的。它看起来有点神秘,所以大脑不会把它看作三件事而只是一件事(线条末端的视觉模式太吸引人了)。