我记得早前有同事问, 正则是否能处理括号配对的正则匹配.
比如, 对于如下的待匹配的字符串:
((()))
就是一个括号配对的字符串. 而对于如下的待匹配字符串:
((()
则不是一个括号配对的字符串.
在以前, 这种情况, 正则无法处理, 最多只能处理固定层数的递归, 而无法处理无线递归的情况... 而在perl 5.6以后, 引入了一个新的特性: Recursive patterns, 使得这种需求可以被正确的处理.
左手代码右手诗
我记得早前有同事问, 正则是否能处理括号配对的正则匹配.
比如, 对于如下的待匹配的字符串:
((()))
就是一个括号配对的字符串. 而对于如下的待匹配字符串:
((()
则不是一个括号配对的字符串.
在以前, 这种情况, 正则无法处理, 最多只能处理固定层数的递归, 而无法处理无线递归的情况... 而在perl 5.6以后, 引入了一个新的特性: Recursive patterns, 使得这种需求可以被正确的处理.
插播个消息, 今天, 我终于获得了Zend的维护权限, Zend是PHP源代码中最为核心的部分, 也是最为敏感的地方, 对于这部分的权限控制的一直很严格. 但也是我加入PHP开发组以后, 一直想得到的权限. 🙂
好了, 言归正传, 今天对PHP5.4的Zend引擎做了一个改进, 改进了参数不兼容的报警信息. 具体的来说:
今天在bugs.php.net上, 有一个用QQ邮箱的用户发了一个问题(#55731).
他问, 为什么, 如下的代码, 会调用俩遍getter:
一开始, 我只是简单的回答了下, 和他在__get中再次获取$this->elmname有关系. 后来这个同学又要追问原因, 我只好用我那糟糕的英语给他解释.
可能用英语没太讲明白, 我现在用中文解释下吧.
最近有个感觉, 越来越多的人开始从事PHP扩展开发的工作(越来越多的人来问问题了, 呵呵)
在这里先说声抱歉, 有的时候, 有的同学的邮件进了垃圾邮件没有办法及时回复.
为了方便大家, 我在这里罗列一些可能用到的资源.
Hi, 从我做PHP开始到现在, 已经差不多有6年的时间了.
在6月份的时候, 我加入了PECL官方扩展开发小组.
也就在前天, 我终于加入了PHP开发小组. 这个也算是一个阶段性的被肯定吧..
做开源事业, 真的是很单纯, 难以抑制的喜悦, 想和大家分享.
回顾这6年, 兴趣是我最大的动力, thanks all.
一个月以前, 我开发了一个php扩展( PLua – Lua for PHP ), 支持在PHP中调用Lua脚本
后续, 发现在pecl中有一个类似的扩展, lua
在和lua的作者johannes, Andreas讨论过以后, 我们一致认为, 应该只保留一个lua扩展.
考虑到Plua的设计更加符合PHP思维习惯, 功能上也比lua要更加丰富, 大家就一致决定把plua作为新的lua标准扩展, 当然plua也会借鉴lua现在的一些优点.
目前plua已经整合到pecl lua的svn中, 等和johannes确认以后, 就会发布release: Lua
最近同事"神经病"同学的项目中, 发现一个问题.
用firefox打开多个tab, 每个tab都去请求同一个URL(尽量同时), 会发现, 这些请求, 会被浏览器串行化.
也就是说, 浏览器会在第一个页面请求结束以后, 再发起第二个请求,
比如对于如下脚本:
<?php
error_log("start . " . getmypid(). "\n");
sleep(5);
error_log("end . " . getmypid() . "\n");
with 12 Comments
上个月, 终于算加入了PHP developer team, 一直以来最大的障碍就是语言, 现在想起来, 当年真应该更加认真努力的去学习英语.
得到的第一个任务是: 解决一个feature request, 请求在allow foreach($array as list($a,$b)
大意是说, 希望PHP能支持如下语法:
<?php
foreach (array(array(24,2333), array(31,4666)) as $k => list($a, $b)) {
printf("key:%s, a=>%s, b=>%s\n", $k, $a, $b);
}
/** output:
key:0, a=>24, b=>2333
key:1, a=>31, b=>4666
*/
实现这个功能, 入手点就是去改写PHP的语法分析逻辑, 具体的实现我会再后面附上对PHP5.4的patch.
with 8 Comments