关于PHP语言无字母代码的研究
小标 2018-07-04 来源 : 阅读 1525 评论 0

摘要:本文主要向大家介绍了关于PHP语言无字母代码的研究,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了关于PHP语言无字母代码的研究,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

什么是无字母代码,也就是代码中不出现任何的数字或者字母.而是通过用一些特殊的方法构造出字母.这个在javascript里面经常看到.PHP 也可以通过一些hack的方式来实现

首先php 里有一个非常特殊的字符就是 "_"  这个字符在不经过引号的引起来的情况就可以直接输出

例如执行

<?phpecho _;?>

你会得到  _ 这个字符的输出。而其他的特殊字符则不可以.

好了开始转变思路.众所周知php是弱类型语言,字符串是可以直接和数字进行运算的. 那么 _ 这个字符应该也同样可以

尝试如下代码:

<?phpecho +_;?>

会看到输出 的是数字 0.很神奇对吧,其实上面的代码类似  echo 0+_; 字符串 _ 被转成整型来进行计算了.

好了现在数字0已经有了. 那么1 怎么获得呢..

那么就要用到取反的符号了 ~ ,尝试执行如下代码

<?phpecho -~+_;?>

可以看到输出是 1 ,原理也比较简单 0 按位取反得到 -1 (注意是二进制的按位取反), - 则是数学意义上的取反,最终得到1

好了现在 1 和 0 我们都有了..可以说这个世界就拥有了一半了.后面的数字就不用再举例了.

即使最简单的 (-~+_)+(-~+_) ...的方式也足够得到其余所有的数字了.

好了下面要解决比较困难的问题,如何获得abcd 这样的字母呢

暂时我只能找到用数组变量转成Array的字符串,然后用数组字符串的形式取出其中的字母

我们先来得到一个数组

$_[]++; 注:php 5.4以前是不支持 $_=[]; 这样的数组定义语法的.所以只能变通一下用 $_[]++ 来得到一个数组。

然后看下面的代码

<?php

$_[]++;echo $_._;?>

你会看到输出 Array_  , 哈哈 ,终于得到我们要的字符串了。

下面思路就比较清晰了,只要取出 这个字符串数组里的字符即可。看代码把

<?php

$_[]++;

$_[]=$_._;echo $_[-~+_][+_];?>

这样就得到 第一个字母 A 了. 

其他的字母 想要得到就简单多了

<?php

$_[]++;

$_[]=$_._;

$_=$_[-~+_][+_];echo ++$_;?>

这样就可以得到字母B 了.

好了我们来 尝试执行如下代码:

<?php

$_[]++;

$_[]=$_._;

$_=$_[-~+_][+_];

++$_;++$_;++$_;++$_;$__=++$_;++$_;$___=++$_;++$_;++$_;++$_;++$_;++$_;$____=++$_;$______=$_____=++$_;

$_=++$_____.$___.$_____.++$___.$____.$__.$______;

$_();?>

代码有些丑陋, 但正常执行应该是没有问题的.那么你看出上面的代码执行的是什么内容了吗?

以上就介绍了PHP的相关知识,希望对PHP有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言PHP频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved