PHP学习之正则表达式
2015-01-24信息快讯网
PHP支持两种正则表达式,POSIX风格的正则表达式和兼容Perl风格的正则表达式。
现在我们大家所说的正则表达式基本上是指兼容Perl风格的正则表达式。POSIX风格的正则表达式基本上没人使用了,所以从PHP5.3起,已经不推荐使用了,可能到PHP的下一个版本就会把相关的函数删除。关于正则表达式,因为太复杂,所以以后想专看一本正则的书,所以只介绍兼容Perl风格的正则表达式的一些函数。
1. 定界符
定界符表示正则表达式的开始和结尾,一般用斜线(/)表示。在PHP中(其它语言暂时没有测试过),它也可以用其它的非数字字母的字符来代替。如/\d+/和#\d+#的表示同一个正则表达式\d+。同时,也可以用小括号对,中括号对,大括号对做为定界符,如[\d+]。
2. 函数
匹配函数:preg_match(); 以及preg_match_all();
替换函数:preg_replace();
拆分函数:preg_split();
过滤函数:preg_grep();
示例代码:
$a = <<< TEXT aaaaaaa 15 bbbbbbb 16 TEXT; $ret = preg_match(/(\w+) (\d+)/, $a, $match); // $ret : 1 // $match : array(aaaaaaa 15′, aaaaaaa, 15′) $ret = preg_match_all(/(\w+) (\d+)/, $a, $match); // $ret : 2 // $match : array( // array(aaaaaaa 15′, bbbbbbb 16′), // array(bbbbbbb, bbbbbbb), // array(15′, 16′), // ) $ret = preg_match_all(/(\w+) (\d+)/, $a, $match, PREG_SET_ORDER); // $ret : 2 // $match : array( // array(aaaaaaa 15′, bbbbbbb, 15′), // array(bbbbbbb 16′, bbbbbbb, 16′), // ) $b = preg_replace(/(\w+) (\d+)/, \1, \2′, $a); // $b : aaaaaaa, 15 // bbbbbbb, 16′ $c = preg_split(/\s/, $a); // $c : array(aaaaaaa, 15′, bbbbbbb, 16′) $files = array(aa.txt, bb.xls, cc.txt); $txtFiles = preg_grep(/.*\.txt/, $files); // $txtFiles : array(aa.txt, cc.txt)
参考资料:
PHP程序设计,2003,第四章 字符串,正则表达式
php中++i 与 i++ 的区别
php中判断文件空目录是否有读写权限的函数代码
PHP中全局变量global和$GLOBALS[]的区别分析
php一个找二层目录的小东东
PHP文章采集URL补全函数(FormatUrl)
php中邮箱地址正则表达式实现与详解
php正则表达匹配中文问题分析小结
php preg_filter执行一个正则表达式搜索和替换
PHP中的正则表达式函数介绍
php中通过正则表达式下载内容中的远程图片的函数代码
PHP提取字符串中的图片地址[正则表达式]
PHP学习之数组的定义和填充
PHP学习之字符串比较和查找
PHP学习之整理字符串
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
PHP基础学习小结
php 生成文字png图片的代码
PHP中用正则表达式清除字符串的空白
PHP下常用正则表达式整理
php正则过滤html标签、空格、换行符的代码(附说明)
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
php下正则来匹配dede模板标签的代码
PHP IPV6正则表达式验证代码
php 正则表达式小结