网站建设资讯

PHP与正则表达式

网站制作 2018-12-04 09:44:10 | 阅读:1886
什么是正则表达式
正则表达式就是用某种模式去匹配一类字符串的一种公式,通谷的讲,就是用一个“字符串”描述一个特征,然后验证另一个“字符串”是否符合这个特征的公式。
       比如“ab+”描述的特征是:一个a和任意个b。那么ab,abb,abbbbbb都是符合这个特征,而字符串ad显然是不符合的
       正则表达式可应用到各个方面,在常用的高级编辑器中,几科都支持正则表达式,如word,vim等
       正则表达式在编程语言中更是得到了大规模推广。现在的语言几科都是原生的,都可以从语法上支持正则表达式,尤其在perl的扒动下,php,java.net,javascript等语言都支持有正则语法。
PHP中的正则函数
       正则表达式看起来总是那么古怪,以至于许多人对其望而生畏。首先要澄清一些概念:虽然不同语言间正则语法大同小异,但实际上正则表达式的实现有多种引擎(如非确定性有穷自动机NFA,确定性有穷自动机DFA),其表现又有多种风格(如javascript有自己的朴素正则,Perl有一套高级而强大的正则,。Net也有自己的一套正则风格)。另外,还有人可能容易混淆PHP中的preg和ereg
       简单的说,PHP中有两套则函数,两者功能着不多:
  1. 由PCRE库提供的函数,以“Preg_”为前缀命名 PCRE(PERL Compatible Regular Expression)由Philip Hazel于1997年开发,现代的编程语言和软件中一般都使用PCRE库
  2. 由poSIX扩展提供的函数,以“ereg_”为前缀命名。POSIX由一系列规范构成,定义了UNIX操作系统应用支持的功能,所以”POSIX”风格的正则表达式也就是“关于正则表达式的POSIX规范”,定义了BRE和ERE两大流派,通常UNIX的一些工具和较老的软件中会使用POSSIX风格的正则,另外一些数据库中也提供了POSIX风格的正则表达式
自PHP5。2以后,就不再推荐使用POSIX正则函数库,若程序中使用了则会报Deprecated级别的错误,这种情况通常在一些较老的代码中比较常见。其实使用或不使用posix正则函炒出香味库二者本质上没有多大差别,主要是一些表现形式,语法和扩展功能的差别