最新消息:历时半年,永住昨天下来了

PHP学习(12) 正则表达式

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();

示例代码:

PHP
<?php
$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学习(12) 正则表达式

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址