January 14, 2011
| 作者:白菜
|
分类:编程算法
第十四章 正则实战和常用正则整理
本章将会讲解一些正则解题的技巧和常用正则,部分实例来自网络,不能保证其效率最佳。
例一:验证密码是否符合规则。要求如下:
只能由小写字母、数字和横线(-)组成;2.开头和结尾不允许是横线;3.不允许全部是数字;4.不允许有连续(超过一个)的横线。
下面我们一一解析:
1.只能由小写字母、数字和横线(-)组成这一条很好办,用字符组『[-a-z0-9]』即可解决,注意我们没有用字符组『\w』,因为一般来说『\w』等价于『[a-z0-9_]』,下划线_也可以匹配;在使用正则表达式时准确限定范围、避免错误匹配,是需要谨记的规矩;
阅读剩余部分...
January 8, 2011
| 作者:白菜
|
分类:编程算法
英文原文来自Smashing Magazine。由笨活儿翻译。转载请注明出处。
正则表达式(Regular Expression, abbr. regex) 功能强大,能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用。不幸的是,简单的正则表达式对于一些高级运用,功能远远不够。若要进行筛选的结构比较复杂,你可能就需要用到高级正则表达式。
本文为您介绍正则表达式的高级技巧。我们筛选出了八个常用的概念,并配上实例解析,每个例子都是满足某种复杂要求的简单写法。如果你对正则的基本概念尚缺乏了解,请先阅读这篇文章,或者这个教程,或者维基条目。
这里的正则语法适用于PHP,与Perl兼容。
1. 贪婪/懒惰

所有能多次限定的正则运算符都是贪婪的。他们尽可能多地匹配目标字符串,也就是说匹配结果会尽可能地长。不幸的是,这种做法并不总是我们想要的。因此,我们添加“懒惰”限定符来解决问题。在各个贪婪运算符后添加“?”能让表达式只匹配尽可能短的长度。另外,修改器“U”也能惰化能多次限定的运算符。理解贪婪与懒惰的区别是运用高级正则表达式的基础。
贪婪操作符
操作符 * 匹配之前的表达式零次或零次以上。它是一个贪婪操作符。请看下面的例子:
1 |
preg_match( '/<h1>.*< \/h1>/', '</h1><h1>这是一个标题。</h1> |
2 |
<h1>这是另一个。</h1>', $matches ); |
句点(.)能代表除换行符外的任意字符。上面的正则表达式匹配 h1 标签以及标签内的所有内容。它用句点(.)和星号(*)来匹配标签内的所有内容。匹配结果如下:
整个字串都被返回。* 操作符会连续匹配所有内容—— 甚至包括中间的 h1 闭合标签。因为它是贪婪的,匹配整个字串是符合其利益最大化原则。
阅读剩余部分...
January 8, 2011
| 作者:白菜
|
分类:编程算法
在程序员日常工作中,数据处理占据了相当的比重。而在所有的数据之中,文本又占据了相当的比重。文本能够被人理解,具有良好的透明性,利于系统的开发、测试和维护。然而,易于被人理解的文本数据,机器处理起来就不一定都那么容易。文本数据复杂多变,特定性强,甚至是千奇百怪。因此,文本处理程序可谓生存环境恶劣。一般来说,文本处理程序都是特定于应用的,一个项目有一个项目的要求,彼此之间很难抽出共同点,代码很难复用,往往是“一次编码,一次运行,到处补丁”。其程序结构散乱丑陋,谈不上有什么“艺术性”,基本上与“模式”、“架构”什么的无缘。在这里,从容雅致、温文尔雅派不上用场,要想生存就必须以暴制暴。
事实上,几十年的实践证明,除了正则表达式和更高级的parser技术,在这样一场街头斗殴中别无利器。而其中,尤以正则表达式最为常用。所以,对于今天的程序员来说,熟练使用正则表达式着实应该是一种必不可少的基本功。然而现实情况却是,知道的人很多,善于应用的人却很少,而能够洞悉其原理,理智而高效地应用它的人则少之又少。大多数开发者被它的外表吓倒,不敢也不耐烦深入了解其原理。事实上,正则表达式背后的原理并不复杂,只要耐心学习,积极实践,理解正则表达式并不困难。下面列举的一些条款,来自我本人学习和时间经验的不完全总结。由于水平和篇幅所限,只能浮光掠影,不足和谬误之处,希望得到有识之士的指教。
阅读剩余部分...
December 15, 2010
| 作者:白菜
|
分类:php
php实用指南,集成作者多年心血,蕴含广大网友智慧。。。是你居家必备,杀人灭口必备之凶器。

呵呵,别听我吹。。。只完成了十分之一的工作量,写了一小部分。纯属个人拙见。
由于本人精力有限,最近还萎靡不振,所以很多东西只能慢慢来了。接下来还会有XXX,YYY实用指南等出炉。
作者:猪也知道
http://aiyooyoo.com
欢迎大家分发此文档,让更多的人使用,为国内php发展加力。
未经文章作者同意,不得将本资料用于商业用途,转载请注明出处和作者。
申请加入写作及交流:waitfox@qq.com
敬请期待。
最后更新:2010-12-18日。
(本次更新添加第三篇,涉及PDO,mysql数据库的优化及技巧等实用性文章。)
更新:2010-01-04
(修改数据库一章的一些错误,添加webservice,phprpc,soap,正则,php初级工程师能力测试题等)
第一篇导读:
手工安装和配置Winxp(Win7)+php 5.3.3+apache 2.2.17(ngnix 0.8.53)+MySQL5.1.49
其他安装模式
因此我在这里仅推荐netbeans和php designer 两款IDE
特色功能:代码即时纠错功能,CSS层叠样式表设计,数据库管理,丰富的插件和扩展,php单元测试,phpdocument生成,代码模板,zend框架支持。。。
xdebug插件
第二篇:PHP基础语法篇
变量,常量,引用,语法糖,数组,输入,输出,文件操作,格式化输出,模拟一个机器人,来向博客发送留言,斐波那契数列,算法
第三篇导读:
导读1:PDO扩展为PHP定义了一个访问数据库的轻量的,持久的接口。实现了PDO接口的每一种数据库驱动都能以正则扩展的形式把他们各自的特色表现出来。注意;利用PDO扩展本身并不能实现任何数据库函数。你必须使用一个特定的数据库PDO驱动去访问数据库。PDO提供了一个数据访问抽象层,这就意味着,不管你使用的是哪种数据库,你都可以用同样的函数去进行查询的获取数据。
导读2:丑陋的数据库设计有哪些?
①泛滥的自增主键。
②脱离业务的荒谬的字段设计。
③乱用索引。
tips和潜规则,Memory纳粹表,NDB引擎,调优,查看性能报告
范式与反范式基本理论
样章地址:
http://u.115.com/file/f7635e660e#
php实用指南2.0.rar
August 10, 2010
| 作者:白菜
|
分类:编程算法
前几天看了鸟哥的BLOG上写的关于正则表达式的回溯与递归的限制时,对贪婪、非贪婪产生的回溯有疑问,遂近段时间,仔细的学习研究了一下,现在把经验心得与大家分享一下。
先扫盲一下什么是正则表达式的贪婪,什么是非贪婪?或者说什么是匹配优先量词,什么是忽略优先量词?
好吧,我也不知道概念是什么,来举个例子吧。
某同学想过滤 之间的内容,那是这么写正则以及程序的。
1 $str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪
看起来,好像没什么问题,其实则不然。若
1 $str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>';
那么经过上面的程序处理,其结果为
1 $str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>';
2 $str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪
3 print_r($str);
4 //$str 输出为 <script>alert(document.cookie)</script>
阅读剩余部分...