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

淄博网站建设补贴seo厂家电话

淄博网站建设补贴,seo厂家电话,网络教学平台长沙理工,广州网站建设解决方案正则绕过 正则表达式PHP正则回溯PHP中的NULL和false回溯案例案例1案例2 正则表达式 在正则中有许多特殊的字符#xff0c;不能直接使用#xff0c;需要使用转义符\。如#xff1a;$,(,),*,,.,?,[,,^,{。 这里大家会有疑问#xff1a;为啥小括号(),这个就需要两个来转义不能直接使用需要使用转义符\。如$,(,),*,,.,?,[,,^,{。 这里大家会有疑问为啥小括号(),这个就需要两个来转义但是中括号[]和大括号{}仅转义左侧。这样的原因是存在一个特殊含义组而中括号和大括号没有左侧就无法实现闭合也就无法编译。 当然里面也存在一个特殊符号“-”也是不需要转义的起到连接符的作用主要使用在[]中当做普通文本即可。 除了一些特殊字符还有一些特殊符号的表示像\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次就可以了。 所以此时的greetingMerry Christmas ‘a’*1000000。
http://www.eeditor.cn/news/125336/

相关文章:

  • 南宁建站模板源码建筑人才网查工程师证
  • 武进做网站北京传媒公司
  • 成都可以做网站的公司互联网网站解决方案
  • 张家港做淘宝网站网站建设和维护费怎么摊销
  • 网站建设找哪家公司比较好清远网站关键词优化
  • 做零售出口的网站前端做网站是什么流程
  • 精品课程网站怎么做长沙建站公司效果
  • 部门网站建设情况总结菜馆网站制作
  • 利用手机搭建网站深圳做网站推广哪家好
  • 如何用wordpress制作网站海阳手机网站开发
  • frontpage做视频网站开发软件网站建设
  • 手机wap网站模板下载网站商城前台模板
  • 有服务器和网站代码了 怎么建站公网怎么做网站
  • 网站建设编辑器网站首页结构图
  • wix做的网站在国内访问不了宁波网络营销推广制作
  • 视频app开发整站seo
  • wordpress企业建站沈阳妇科哪个医院看的比较好
  • 网站开发 行业动态湖北住房城乡建设厅网站首页
  • 中国建设银行演示网站泉州微信网站开发公司
  • 网站一般多少钱一年如何优化网络
  • 食品行业网站建设方案网站开发的技术简介是什么
  • 平安河南建设网站贵阳网站建设价格
  • 长沙行业网站建设费用标准潍坊住房和城乡建设厅网站
  • c 可以用来做网站吗天津设计公司招聘
  • 建设营销网站石家庄建站公司
  • 培训行业门户网站建设下载导航到手机上安装
  • 网站验证码怎么做的5网站建设公司
  • 网站建设罗贤伟dw网页设计的一般步骤
  • 苏州网站建设公司鹅鹅鹅嘉兴专业网站建设
  • 公司怎么注册官方网站建立网站的主要流程有哪些步骤