php防止复制代码,如何拒绝使用危险的PHP函数?[复制品]

最安全和易于维护的选项是用PHP编写专用的“迷你语言”。你可以让它成为PHP的一个子集,或者让它看起来像Excel公式,甚至可以自己发明一个。这样你就可以完全控制正在发生的事情。

/ /

只是为了好玩,这里有一个小口齿不清给你

function lisp($x) {

if(is_string($x)) {

$re = '~\(([^()]*)\)~';

while(preg_match($re, $x))

$x = preg_replace_callback($re, 'lisp', $x);

return trim($x);

}

$x = preg_split('~\s+~', $x[1]);

$e = array_shift($x);

if(!$x)

return is_numeric($e) ? floatval($e) : $e;

switch($e) {

case '+': return lisp($x[0]) + lisp($x[1]);

case '-': return lisp($x[0]) - lisp($x[1]);

case '*': return lisp($x[0]) * lisp($x[1]);

case '/': return lisp($x[0]) / lisp($x[1]);

case 'concat': return lisp($x[0]) . lisp($x[1]);

}

return function_exists($e) ?

call_user_func_array($e, array_map('lisp', $x)) : '';

}

$input = '

(strtolower

(concat

(strrev olleh)

(+ 22 20)))';

echo lisp($input); // hello42

;)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值