PHP学习之正则表达式


Posted in PHP onApril 17, 2011

现在我们大家所说的正则表达式基本上是指兼容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 相关文章推荐
详解:――如何将图片储存在数据库里
Dec 05 PHP
PHP Document 代码注释规范
Apr 13 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
laravel 解决多库下的DB::transaction()事务失效问题
Oct 21 PHP
PHP学习之字符串比较和查找
Apr 17 #PHP
PHP学习之整理字符串
Apr 17 #PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 #PHP
PHP基础学习小结
Apr 17 #PHP
php 生成文字png图片的代码
Apr 17 #PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 #PHP
php编写一个简单的路由类
Apr 13 #PHP
You might like
php中显示数组与对象的实现代码
2011/04/18 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
js html实现计算器功能
2018/11/13 Javascript
Python线程详解
2015/06/24 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
通过自学python能找到工作吗
2020/06/21 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
专升本自我鉴定
2013/10/10 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
工作自我评价范文
2015/03/05 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
清明节随笔
2015/08/15 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript