当前位置: 首页 > news >正文

如何做宣传自己公司网站创意包装设计

如何做宣传自己公司网站,创意包装设计,域名注册哪里最便宜,网站开始开发阶段的主要任务正则绕过 正则表达式PHP正则回溯PHP中的NULL和false回溯案例案例1案例2 正则表达式 在正则中有许多特殊的字符,不能直接使用,需要使用转义符\。如:$,(,),*,,.,?,[,,^,{。 这里大家会有疑问:为啥小括号(),这个就需要两个来转义&a…

正则绕过

  • 正则表达式
  • PHP正则回溯
  • PHP中的NULL和false
  • 回溯案例
    • 案例1
    • 案例2

正则表达式

在正则中有许多特殊的字符,不能直接使用,需要使用转义符\。如:$,(,),*,+,.,?,[,,^,{。
这里大家会有疑问:为啥小括号(),这个就需要两个来转义,但是中括号[]和大括号{}仅转义左侧。这样的原因是,()存在一个特殊含义:组,而中括号和大括号,没有左侧就无法实现闭合,也就无法编译。
当然里面也存在一个特殊符号“-”,也是不需要转义的,起到连接符的作用,主要使用在[]中,当做普通文本即可。

除了一些特殊字符,还有一些特殊符号的表示,像:\d,\D,\s,\S,\w,\W,\b,\B。

还存在一些机制,像贪婪匹配,惰性匹配,又比如存在断言,像:先行肯定断言、先行否定断言。这里就不多说了。

PHP正则回溯

回溯,可以简单理解为返回,也就是在正则匹配时,依次匹配,如果产生不满足正则表达式的情况,则向前依次返回搜索,知道匹配到为止,否则,正则无法匹配。
举个例子:
匹配正则:/\d.*g.*/gm
正则表达的含义:首先匹配\d,也就是先数字匹配,然后是.*,全部匹配,匹配字母g,再全部匹配。
我们的案例给这个:1234as23gsfggsw,正常理解应该2步差不多了。
我们在regex101.com查看一下具体匹配了几步。
在这里插入图片描述
这里匹配了八步。
看一下第三步:
在这里插入图片描述
和我们想的差不多基本已经匹配完了,但是这个正则没有走完,也就是说它回去匹配字母g,再来看一下后面两步。
在这里插入图片描述
在这里插入图片描述
开始了我们前面提到的回溯,开始从后往前匹配内容,也就是字母g,在匹配到后,就会再向后匹配正则表达式。

在PHP中,回溯不是无限的,也就是说回溯步数是有限制的,根据英文文档显示可以回溯1000000次,这是一个很大的数字。

PHP中的NULL和false

作为弱数据型语言,php的比较还是比较特殊的。
PHP存在严格比较和松散比较。严格比较也就是“===”,松散比较“==”。
松散比较,比较的仅是数据的值。
严格比较,比较的是数据的值和类型。
PHP下,也存在一些隐式转换,将NULL和false进行转换
下面就展示一下NULL和false的比较

0 == false: bool(true)
0 === false: bool(false)0 == null: bool(true)
0 === null: bool(false)false == null: bool(true)
false === null: bool(false)"0" == false: bool(true)
"0" === false: bool(false)"0" == null: bool(false)
"0" === null: bool(false)"" == false: bool(true)
"" === false: bool(false)"" == null: bool(true)
"" === null: bool(false)

很明显,在严格模式下,NULL和false相同。

回溯案例

案例1

<?php
function areyouok($greeting){return preg_match('/Merry.*Christmas/is',$greeting); //正则匹配
}if(!areyouok($greeting)){if(strpos($greeting,'Merry Christmas') !== false){   echo 'welcome to nanhang. '.'flag{i_Lov3_NanHang_everyThing}';}else{echo 'Do you know .swp file?';}
}else{echo 'Do you know PHP?';
}

分析一下内容:首先第一个函数里面是一个正则匹配,正则匹配的内容是:Merry,然后任意字符,然后是Christmas。
来到下面的判断,先判断是否符合上面的正则,不符合,进入下一层,否则返回打印,然后,又判断。
这里有意思的两个点是在判断上,第一个判断是否符合正则,正则则是一个字符串,不符合进入下一个,而下一个则判断字符串包不包含括号里的内容,还要和false进行严格比较。也就是说呢,要不是字符串,还要和false不完全等。
首先大家想到的是,第二个判断为true就好了,但如果满足的话,那就必须是字符串,但第一个判断已经否定了。

理论成立,但仍需要实测,
首先字符串
在这里插入图片描述

所以,这时候我们就要想到我们的NULL和false,它们两个在严格比较下是相等的。
那这样要如何解决,那greeting就不能为字符串,且要为NULL,数字就可以。
所以,greeting[]=123,就解决了。

案例2

<?php
function areyouok($greeting){return preg_match('/Merry.*Christmas/is',$greeting);
}$greeting=@$_POST['greeting'];
if(!is_array($greeting)){if(!areyouok($greeting)){if(strpos($greeting,'Merry Christmas') !== false){echo 'Merry Christmas. '.'flag{i_Lov3_NanHang_everyThing}';}else{echo 'Do you know .swp file?';}}else{echo 'Do you know PHP?';}
} else {echo 'fuck array!!!';
}
?>

这个案例是上面的升级版,在这里就没有办法,使用NULL,来实现绕过了,这里对数组也进行了判断,难度可见一斑。
但是我们要想到一个问题,如果我们无法匹配正则,那就绕过,不就可以了。
上面我们提到了,PHP也就只能回溯1000000次,多了就不行了,如果超了,正则就匹配失败,也是满足我们判断条件的,所以,我们只需要在字符串加一些不相干的内容,一直回溯,超过1000000次就可以了。
所以,此时的greeting=Merry Christmas + ‘a’*1000000。

http://www.yayakq.cn/news/338504/

相关文章:

  • 如何购买网站域名公司logo标志设计免费
  • 出入广州最新通知今天东莞全网seo排名优化中心
  • 山东锦华建设集团有限公司网站物流单号查询网站建设
  • 外贸 网站 模板如何将模板导入wordpress
  • 建站吗官方网站嵌入式软件工程师前景
  • 建设开发有限公司网站贵州建设厅网站官网
  • 网站开发团队构成公众号制作的网站开发
  • 大型网站怎么做优化黑河最新消息今天
  • 合肥浦发建设集团网站先做网站还是先做app
  • php网站开发现状都用什么打开模板职业中学网站建设
  • 网站网页跳转wordpress连通公众号
  • 家庭服务网站的营销策略做产品设计之前怎么查资料国外网站
  • 手机门户网站国外域名免费注册
  • 免费 微网站icp备案号查询官网
  • 网站官方认证怎么做小工程承包网app
  • 做网站建设的有哪些在windows2003上做网站
  • 软件开发软件开发网站长春微网站
  • 中国建设银行深圳分行网站营销 网站制作
  • 域名注册哪个网站好wordpress字母头像
  • 上饶哪里可以学网站建设wordpress html 单页
  • 孟村网站建设响应式网站div居中
  • 策划书模板word郑州seo优化顾问
  • 网站上传文件不存在哈尔滨视频剪辑培训机构
  • 上海利恩建设集团有限公司网站保定网站建设方案外包
  • 怎么做网站文字图片开州网站建设
  • 长沙河西做网站网站怎么做 凡科
  • 做网站的作用网站编辑工具软件
  • 做网站都需要什么步骤芙蓉区网站建设
  • 个人备案能建立企业网站吗松江手机网站建设
  • 网站制作镇江the7 wordpress 主题