`

PHP正则表达式

    博客分类:
  • web
阅读更多
今天起,会开始弄一个PHP教程系列文章. 主要是针对正则表达式的.
大概的内容排序是这样安排的:

1. PHP 中的正则表达式
2. 八个实用的PHP正则表达式
3. 如何书写更易阅读的PHP正则表达式
4. 半小时精通正则表达式
5. 正则在文章采集系统中的应用及常见问题答疑
6. ...更多策划中

文章内容来源方面,有本站旧文重新整理而来,也有翻译英文文献而来(感谢在加拿大的!oEL同学),还有些是个人心得.
个人能力有限,肯定有一些错误,发现的朋友请给予提醒以及时更正. 不至误导新手. 如果文章能给大家一些参考,就很满足了. 也欢迎PHP爱好者投稿,完善本系列,让新手少走一些弯路.



PHP与正则表达系列之: PHP 中的正则表达式


正则表达式简介及正则表达式在PHP中的作用

正则表达式是一种表示规则的途经,在 PHP 中利用这些规则可以让你灵活变通地匹配检验替换以及修改 字符串。本文涉及到 PCRE 的基础,以及如何使用 preg_match(),preg_replace(),and preg_split() 函数。

接下来就让我们从实例循序渐进地开始学习如何使用这些函数。

规则匹配 preg_match

利用 preg_match(),我们可以完成字符串的规则匹配。如果找到一个匹配,preg_match() 函数返回 1,否则返回 0。还有一个可选的第三参数可以让你把匹配的部分存在一个数组中。在验证数据时这个功能可以变得非常有用。
$string = "football";
if (preg_match('/foo/', $string)) {
// 匹配正确
}

上面的例子将成功匹配,因为单词 football 里面包含 foo。现在我们来试一个更复杂的,例如验证一个 Email 地址。
$string = "first.last@domain.uno.dos";
if (preg_match(
'/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',
$string)) {
// 验证Email地址
}

这个例子将验证出此 Email 地址为正确格式。现在让我们来看看这段正则表达式所代表的各种规则。


PCRE 顾名思义,与在 Perl 中的正则表达式有相同的语法,所以每段正则表达式必须要有一对定界符。我们一般使用 / 为定界符。

开头的 ^ 和结尾的 $ 让PHP从字符串开头检查到结尾。假使没有 $,程序仍会匹配到 Email 的末尾。

[] 被用来限制许可输入类型。例如 a-z 允许所有的小写字母,A-Z 允许所有的大写字母,0-9 所有数字,等等,以及更多其他类型。

{} 被用来限制期望的字符数。例如 {2,4} 表示字符串的每一节可以有 2-4 字符长度,像是 .com.cn 或 .info。在这里, "." 并不算一个字符,因为 {2,4} 之前定义的许可输入类型只有大小写字母,故此段只匹配大小写字母

() 被用来合并小节,并定义字符串中必须存在的字符。(a|b|c) 能够匹配 a 或 b 或 c。

(.) 将匹配所有字符,而 [.] 只匹配 "." 本身。

要使用一些符号本身,必须在前增加一个 。这些字符有:( ) [ ] . * ? + ^ | $

规则替换 preg_replace

preg_replace 允许你替换字符串中匹配到你定义的正则表达式。一个简单的注释移除功能:

preg_replace('[(/*)+.+(*/)]', '', $val);

这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -> '')。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。

规则分割preg_split

preg_split 可以将整段字符串按匹配到的正则表达式分割成 1、2或更多字符的多段。比如获取标签,无论是用空格还是逗号分隔的:
$tags = preg_split('/[,]/', 'my,tags,unevenly,spaced');
print_r($tags);

正则表达式是一个很实用的技巧,让你可以专注于所期望得到的内容。

但有时候一段正则表达式并不能让你如愿以偿得到预期的结果是件很烦人的事,所以我将在本系列的第二篇文章附上一些简单的语法指南希望能够帮到大家。

如果你想跳过痛苦的练习过程而直接获得一些成功的喜悦感,请期待PHP5研究室推出的 "PHP与正则表达系列之二: 八个实用PHP正则表达式"。


附:PCRE 语法指南

/ 定界符
^ 字符串头
$ 字符串尾
[a-z] 所有小写字母
[A-Z] 所有大写字母
[0-9] 所有数字
? 零或一个紧接前的字符
* 零或多个紧接前的字符
+ 一或多个紧接前的字符
{4} 4个紧接前的字符
{4,8} 4-8个紧接前的字符
. 任意字符
(red|green|blue) Red 或 green 或 blue(红 或 绿 或 蓝)
s 空格

特殊字符(需要在前加 )

( ) [ ] . * ? + ^ | $
分享到:
评论

相关推荐

    php正则表达式手册

    php正则表达式手册则是初学者学习正则表达式的基础读物,介绍了正则表达式的概念、结构、历史及应用。 首先,正则表达式的定义是指定了一个用于字符串匹配的模式。这个模式通常由普通字符(如字母和数字)和特殊...

    php正则表达式.txt

    从给定的文件信息中,我们可以提取到关于PHP正则表达式的多个关键知识点,下面将对这些知识点进行详细的解析。 ### PHP正则表达式简介 正则表达式是一种用于匹配字符串模式的强大工具,在PHP中被广泛应用。它们...

    PHP正则表达式教程

    PHP正则表达式教程,从基本概念、语法规则、到匹配、拆分、替换,末尾还有常用的验证应用举例。最后希望大家都能熟练掌握正则表达式的知识并正确运用。

    php 正则表达式简单介绍

    ### PHP正则表达式简介与应用 正则表达式(Regular Expression)是一种强大的文本处理工具,在各种编程语言中都有广泛的应用。在PHP中,正则表达式被用于字符串搜索、替换以及验证等操作,是进行数据处理的重要手段...

    PHP正则表达式快速学习及PHP常用正则表达式大全实用文档.doc

    总结起来,PHP正则表达式是一种强大的文本处理工具,它可以帮助开发者高效地进行字符串的匹配、替换和分割操作。通过理解元字符、定位符、量词、分组等概念,以及熟悉PHP提供的相关函数,开发者可以充分利用正则...

    精通正则表达式(第3版)(含awz3 mobi epub)

    本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者...

    php正则表达式

    #### 四、PHP正则表达式的基本语法 正则表达式由各种字符和元字符组成。元字符用于定义模式的特殊含义,例如`.`表示任意单个字符,`*`表示前面的字符可以重复任意次。 **示例**: - `.*`:匹配任意长度的任何字符...

    精通正则表达式(第三版)简体中文版

    - **Perl兼容正则表达式(PCRE)**:Perl语言的正则表达式实现,被广泛应用于PHP、Python等多种编程语言中。 - **Java中的正则表达式**:Java提供了java.util.regex包来支持正则表达式的使用。 - **JavaScript中的正则...

    PHP正则表达式快速学习及PHP常用正则表达式大全.pdf

    在深入探索PHP正则表达式的世界之前,首先要明确正则表达式的作用和意义。正则表达式是一种强大的文本处理工具,用于在字符串中搜索、匹配、查找和替换文本。它的灵活性和强大功能使其成为处理字符串不可或缺的部分...

    php正则表达式深入浅出.docx

    PHP 正则表达式深入浅出 PHP 正则表达式是一种强大的字符串处理工具,可以帮助开发者快速匹配、提取和操作字符串。下面是 PHP 正则表达式的详细知识点: 1. 什么是正则表达式? 正则表达式(Regular Expression...

    PHP正则表达式基本语法和使用方法

    PHP正则表达式基本语法和使用方法 一、实验环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 正则表达式(regular expression)是一种表示方式,...

    PHP 正则表达式.rar

    在“PHP 正则表达式.rar”这个压缩包中,我们很可能会找到关于如何在PHP中使用正则表达式的详细教程。 首先,我们需要了解正则表达式的基本语法。在PHP中,正则表达式通常被包含在两个分隔符之间,例如`/pattern/`...

    php正则表达式在线测试工具源码.rar

    php正则表达式在线测试工具源码,用这个工个可以帮助你测试你所写的正则表达式规则是否正确,方便排除语法、写法上的错误,提高你的代码编译效率,把本PHP文件上传到你的网站目录下运行就可以了。  注:该工具主要...

    PHP正则表达式学习资料

    这份“PHP正则表达式学习资料”应该包含了一系列关于如何在PHP环境中使用正则表达式的教程、示例和实践练习。 首先,了解PHP中的正则表达式函数是至关重要的。`preg_match()`用于匹配一个模式,如果匹配成功则返回...

Global site tag (gtag.js) - Google Analytics