常常做了一段时间的web开发,然后就慢慢迷失了方向。感觉自己的技术到一个瓶颈,不知道下一步该要学习哪些知识。常常这个时候,很多人因为瓶颈,导致一直原地踏步!也有写朋友,感觉自己什么都可以了。 记得,我当时刚做1年多网站时候。就有那个感觉,觉得自己什么都可以做了。什么留言板、用户系统、论坛、产品管理等,然后去一家大一点的公司谋职,被一个招聘人员问了几个问题。然后,觉得自己非常自信,回答非常好!但是结果音信全无,指导后来过来几年后,对当时那段时间回忆起来,觉得自己当时勇气可嘉! 下面,这个图,是作为web开发人员,技能知识点汇总。里面常常包括,ui人员、js人员、web编码人员的所有知识点。但是,这3者之间开发中...
阅读全文
php header函数功能强大,可以给用户发送各种header头信息,只要header头里面能够发送的内容,都可以通过header函数来完成。如发送302跳转,设置cookie,发送401认证,发现last-modify等等! HTTP/1.1 specification for more information on HTTP headers,都可以用该函数完成。总之一句话,任何服务区response应答的头信息几乎都可以用它来发送。如:这里我们经常用header发送302跳转,会发现一个问题。在走查代码时候,遇到很多同人会有类似操作代码,如:<?phpheader("Content-type: text/html; charset=utf-8");//判断用户是否授权if('用户未授权'){ header("location:forbidden.php");}///下面是进行摸个记录操作//删除条记录,或者修改...
阅读全文
断言(Assertions)在正则表达式概念里面难理解,它通常指的是在目标字符串的当前匹配位置进行的一种测试但这种测试并不占用目标字符串,也即不会移动模式在目标字符串中的当前匹配位置。详细可以看看,正则表达式匹配解析过程探讨分析(正则表达式匹配原理),里面提到“零宽度“很多元字符,只是对特殊位置进行匹配,它们可以理解为断言。 断言元字符 常见断言元字符有: \b, \B, \A, \Z, \z, ^ ,$ 它们只是表示特殊位置,各自作用如有字符串AB,带位置表示为:0A1B2 元字符 意义(以上面带位置字符串说明) ^ 行首,字符串首 表示位置0 $ 行尾,字符串尾部,表示位置2 \b 字分界线,可以表示:0,2位置 \B 非字分界线,可以表示1位置 ...
阅读全文
已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化、减少我们正则表达式书写匹配Bug。我们不得不进一步深入了解正则表达式执行过程了。下面我们一起学习,分析下正则表达式执行过程。我们会用regexbuddy测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐、优化工具推荐(regexbuddy推荐)。要了解正则表达式解析过程前,我们先来熟悉几个概念。 常见正则表达式引擎 引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的。目前主要流行引擎有:DFA,NFA两种引擎,我们比较区分下。 引擎 区别点 DFADeterministic finite automaton 确定型有穷自动机 DFA引擎它们不要求...
阅读全文
前不久,我们推荐了个正则表达式入门学习工具。正则表达式工具推荐(学习工具、测试工具) ,今天我们看下,正则表达式的性能测试工具。这里我们先说下,为什么需要这样的工具,这个工具有什么作用呢? 为什么需要性能测试工具 我们都知道,正则表达式使用进行搜索查找,没有字符串直接查找快!而且性能是几何倍数下降。那么,为什么正则表达式速度会比字符串搜索慢呢。我们来看看,正则表达式查找字符串的匹配过程吧。正则表达式由一些元字符,普通字符,量词字符组合成。默认情况下,这些量词元字符(*,+,?)都是贪婪模式,会最大长度匹配字符串。我们知道,正则表达式往往搜索路径会有多个,我们看看,下面匹配过程。就知道,主要影响正则表...
阅读全文
继上几篇正则表达式相关说明(详情:正则表达式 ),我们今天继续讨论下,它的单行,多行模式使用,及容易出现错误地方。单行,多行模式,都是正则表达式的模式修饰符里面出现的参数。目前常用正则表达式都有该使用选项,如:javascript 正则表达式,一般是:”/正则表达式匹配字符/修饰符“ ,最后一个”/” 后面是修饰符。然后,php也是类似的,c#,python等,一般调用正则表达式的匹配函数,都有一个另外选项的,设置模式。 单行、多行模式容易出现理解错误 为什么说,容易出现理解错误呢,它们英文对应说明是:SingleLine ,MultiLine,刚好是单行、多行意思。因此,很多朋友就会从字面理解里面,得出以下结论:(哈哈、刚刚使用,我也是这些朋...
阅读全文
正则表达式贪婪匹配模式,对于初学者,往往也很容易出错。有时候需要匹配一个段代码内容,发现匹配与想要不一致。发现原来,跟贪婪模式有关系。如下,我们看下例子: 什么是贪婪模式 字符串有: “<h3>abd</h3><h3>bcd</h3>”,我们想匹配<h3>…</h3>内容,正则表达式如下: 1、h3开头与结尾,”<h3>待添加</h3>” <h3></h3>都作为普通字符 2、中间可以出现任意字符,个数可以是0个或者多个,正则表达式可以用:.* ,“.”代表任意字符,默认模式不匹配换行,”*” 重复前面字符0个或者多个。 3、最终我们考虑结果将是:”<h3>.*</h3>” ,也可以是:”<h3>.{0,...
阅读全文
我们学习正则表达式,有个好的工具,对于我们初学者还是不错的选择。这里推荐大家使用:RegExBuilder工具,该工具支持正则表达式多种扩展类型匹配方式,包括:单行,多行,从右向左,忽略大小写等。匹配结果直观显示。截图如下: 将原始字符串输入,就可以在正则表达式窗口写入表达式,一边写一边有提示字符。如果有出错,还有错误提示。下面就会显示匹配到的结果。非常方便!该工具,可以搜索:regExbuilder ,有好的工具,欢迎交流!...
阅读全文
什么是正则表达式呢? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),它是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。几乎在各种计算机编程语言中都有用到。可以分为普通正则表达式、扩展正则表达式、高级正则表达式。普通正则表达式在linux shell中常用到,高级正则表达式语法规范,基本由perl演化而来。目前常见程序语言(php,perl,python,java,c#)都支持高级正则表达式。 我们为什么要学习正则表达式? 高级程序语言的正则表达式几乎都从perl语言发展而来,因此,语法几乎一致。你学好了,一门正则...
阅读全文
接上一篇:正则表达式(regex)错误使用导致功能漏洞 ,我们继续梳理,正则表达式错误使用,导致功能设计漏洞(bug),做web方面,需要掌握的知识很多,网站开发这项工作,在国内也就10多年,很多开发人员,都是通过:培训(自学) ->模仿->做项目 ,这样一个过程。很多就是修修改改后,就成为了web开发工程师。这行入门低,很容易上手。但是想成为大师级的,还是很不容易。需要学习,掌握的知识几十门。而对于刚刚入门同人,很多时候因为缺乏系统学习,理论支持。导致提升有些心有余而力不足啦!因此,出现这些或多或少的功能设计漏洞,是很常见的! 好了,有些跑题了,在做代码走查时候,这类漏洞也是时常出现。我们看下,下面代码: &...
阅读全文