写出下面语句执行结果并描述原理:
1 | var a = "global"; |
写出下面语句执行结果并描述原理:
1 | var a = "global"; |
一般情况下php的session都是序列化成字符串保存的,通过$_SESSION可以直接操作session。
最近有个需求要读取保存在memcache中session字符串。网上找了一圈后发现,PHP似乎没有提供直接反序列化session的函数,只好自己写了一个。
理解闭包,关键在于理解作用域。
之前Apache和svn都是源码编译安装,因为centos的yum仓库版本太低了。现在网上很多靠谱的yum源,然而版本却很新,所以用yum又快又好。
之前数据库和webserver都在阿里云的杭州机房,现需要将服务器迁移到北京的阿里云。包括webServer和mysql数据库。希望迁移过程中对线上造成的影响越小越好。
测试环境里有一个Yii项目突然无法从Memcache中获取到session了。
有段代码用jquery设置checkbox总是不生效。并不是常见的那种checked存不存在的问题,而是出在了dom结构上。
反向引用,也称逆向引用、向后引用,是指在正则表达式内部引用前面被捕获到的内容。
这里有个概念:捕获
捕获:这里的捕获是指将匹配的部分进行储存,可供以后使用。
将一个正则表达式的全部或部分用括号包住,则匹配的过程中会将匹配成功的部分存储到一个临时缓冲区,捕获的每一个匹配都按照在正则表达式中从左到右遇到的内容存储。缓冲区的编号从1开始,直至99。在后面可以通过\1, \2, ${1}这样的形式引用被存储的匹配。 如:
1 | //匹配出引号中的内容 |
第一种正则表达式写在双引号中,斜杠后面的字符会被转义,因此反向引用要用\1。第二种因为表达式写在单引号中,所以用\1。 此外,这里的反向引用都不能使用$1替代,$1用于下面的情况
1 | //div去掉属性 |
上述三者效果等同 推荐用${1},因为如果后面需要跟数字,只有${1}能有效区别开来。 这里的preg_replace有一个很方便的正则使用方式:回调
1 | //去掉div标签,并去掉多余空白 |
上述正则表达式后追加一个修正符e,则在后面可以跟回调函数。需要注意引号的添加。
贪婪(非懒惰)表示尽可能多的匹配符合规范的字符串,非贪婪(懒惰)表示一旦遇到匹配的即停止。如:
1 | // /a.*c/ 对字符串 abcccccccc 的匹配 |
php 正则修正符 U可控制贪婪与非贪婪的逆转,如
1 | // /a.*c/ 对字符串 abcccccccc 的匹配 |
在标签匹配中常常遇到此类问题。如匹配并列出各个a标签中的数据.标签会导致匹配出这样的字符串,使用.?才能单独匹配
有时出于某种需要,必须将某部分用圆括号包起来,又不想将其存储起来供以后使用,则需要用到 ?: 来消除圆括号的副作用,不缓存相关匹配。 如: industr(?:y|ies)
就是一个比 industry|industries
更简略的表达式。
这个描述有些困难,暂用实例说明
1 | '/abc (?=1|2|3)/' |
上述被称为正向预查。?后面的 ‘=’和’!’ 分别表示’是’和’非’
反向预查表示向前判断
1 | '/(?<=1|2)abc/ ' |
以上用到的四个符号分别是 ?=, ?! ?<=, ?<!。其中<表示向左即向前,=表示’是’,!表示’非’
正反向预查使用括号都是非获取匹配,匹配结果不会被缓存。并且,预查都不消耗字符串。如:
'/abc (?=1|2|3)/'
匹配 abc2asd 的 abc 之后, 下一次匹配从2开始,而不是从2之后的a开始