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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
自动跳转中英文页面
Oct 09 PHP
删除及到期域名的查看(抢域名必备哦)
May 14 PHP
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 PHP
PHP7新增函数
Mar 09 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解析html的实现代码
2011/08/08 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
PHP7修改的函数
2021/03/09 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
详解Python中break语句的用法
2015/05/14 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python检索特定内容的文本文件实例
2018/06/05 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
基于python监控程序是否关闭
2020/01/14 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
食堂个人先进事迹
2014/01/22 职场文书
观后感格式
2015/06/19 职场文书
文艺节目主持词
2015/07/06 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers