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 相关文章推荐
php cache类代码(php数据缓存类)
Apr 15 PHP
PHP安全配置详细说明
Sep 26 PHP
php分页思路以及在ZF中的使用
May 30 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
PHP SFTP实现上传下载功能
Jul 26 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
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
vue组件实例解析
2017/01/10 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
2014年酒店年度工作总结
2014/12/10 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
新手必备Python开发环境搭建教程
2021/05/28 Python
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
Python的三个重要函数详解
2022/01/18 Python