在PHP中是否存在按位OR运算符(管道符号|)的等价物?我正在使用wordpress插入php插件来允许我的内容条目中的帖子和页面上的PHP代码,插件的工作方式是获取代码并在其上运行eval语句,但eval函数打扰某些符号,如按位OR或双管OR或美元符号$。我试图调用json_encode时遇到了一些问题,其中一些标志通过按位OR连接,当然运行时eval'ed代码被禁止。我的解决方案是将代码放入函数(如json_encode_eval())并通过调用json_encode定义函数.php中的函数,即返回json_encode($ str,FLAG | ANOTHER_FLAG); ,但有更好的解决方案吗?提前谢谢。
答案 0 :(得分:1)
检查wordpress是否正在编码|到一个HTML转义代码。 (寻找
中的任何一个| | | | |
)
如果是这样,你必须在逃避之前对其进行解除。
[我非常确定总是比传达用户提交的文字更好的方式 - 你可能在那里有一个巨大的安全漏洞。]
我尝试了这个并给出了预期的答案:
<?php
eval("\$a = 2|1;");
$b = 2|1;
var_dump($a);
var_dump($b);
输出:
int(3)
int(3)