精灵复习笔记之php正则表达式

本文主要是精灵复习php正则表达式记录下的学习笔记,正则表达式一直都是程序学习的难点,在seo中,也有很多地方用到,如301转向规则,rewrite规则,都是基于正则表达式的,含有一些cms的模板自变量修改替换,如dedecms,也可以使用正则表达式,若是将其融汇贯通,对seo还是有一定帮助的。

下面是复习笔记:

正则表达式简介及正则表达式在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);

附:PCRE 语法指南

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

特殊字符(需要在前加 )
( ) [ ] . * ? + ^ | $

时间: 2025-01-21 12:46:06

精灵复习笔记之php正则表达式的相关文章

oracle复习笔记之PL/SQL程序所要了解的知识点_oracle

复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句:set serveroutput on 结构:declare --声明变量.类型.游标begin --程序的执行部分(类似于java里的main()方法)exception --针对begin块中出现的异常,提供处理的机制 --when...then...

JavaScript高级程序设计(第3版)学习笔记12 js正则表达式_基础知识

需要指出的是,这里只是总结了正则表达式的常用的且比较简单的语法,而不是全部语法,在我看来,掌握了这些常用语法,已经足够应对日常应用了.正则表达式不只是应用在ECMAScript中,在JAVA..Net.Unix等也有相应应用,这篇文章则是以ECMAScript中的正则表达式为基础总结的. 一.正则表达式基础 1.普通字符:字母.数字.下划线.汉字以及所有没有特殊意义的字符,如ABC123.在匹配时,匹配与之相同的字符. 2.特殊字符:(需要时,使用反斜杠"\"进行转义) 字符 含义 字

PHP学习笔记之POSIX正则表达式

1 基础知识 正则表达式是一种描述一段文本模式的方法.到目前为止,我们前面所用到过的精确(文字)匹配也是一种正则表达式.例如,前面我们曾搜索过正则表达式的术语,像"shop"和"delivery". 在PHP中,匹配正则表达式更有点像strstr()匹配,而不像相等比较,因为是在一个字符串的某个位置(如果不指明则可能在字符串中的任何位置)匹配另一个字符串.例如,字符串"shop"匹配正则表达式"shop".它也可以匹配正则表达

MySQL 数据库设计复习笔记及项目实战_Mysql

作者:杨鑫奇 最近手头上有3个项目开动,其他2个都是从底层开始的,一个已经开始了一段时间的了,在小城市小团队开发的条件下,都没有专门的DBA来做数据库的设计和维护,往往都是开发人员顶上,可是看了很多的数据库的设计,感觉很多设计都不是很完美,包括DZ的Ucenter和UcenterHome的数据库,所以这段时间话了近5个小时的时间好好的整理了下数据库方面的基本内容,配合现有的框架来实现快捷的数据库设计,来满足目前项目的需求 参考的数据库文档主要有:目前国内的常见的PHP系统的数据库 DZ6.0的数

CCIE-交换路由复习笔记

    交换     考点: 1.trunk link(基础) 2.vtp 3.vlan 4.stp rstp mstp 5.hsrp vrrp glbp 6.ec   Trunk link: 修改封装模式 802.1q dot1q Isl 私有 内部标签交换 isl头 isl尾 帧头 包头 段头 data 帧尾 帧头:目的mac 源mac vlan-id(10bit插入) Trunk link的配置switchport 配前先shutsown接口 先sw trunk enca.. 再sw mo

C语言复习笔记之数据结构详解

一.概述 学习语言一开始都是学习的数据类型,C语言包含的数据类型如下所示: 二.数据类型介绍 1.基本数据类型: 基本数据类型最主要的特点是,其值不可以再分解为其他类型.也就是说,基本数据类型是自我说明的. 按照取值可以分为:常量和变量. 常量不能改变,用define在宏中定义.其中8进制以0开头,16进制以0x开头,长型L结尾. 在32 位的系统上: short 占用的内存大小是2 个byte: int 占用的内存大小是4 个byte: long 占用的内存大小是4 个byte: float

Activity 生命周期复习笔记

first activity onCreate() onStart() onResume()   onPause()   second Activity onCreate() onStrart() onResume()   first Activity onStop() 仅在全遮盖   second Activity onPause() first Activity  onRestart() 不需要重新创建 即不需调用 onCreate() 因为第一个Activity未被销毁掉 onStart(

操作系统复习笔记

2章: 1.进程的状态与进程控制块(pcb):至于进程的几种状态就不必说了,就是那几个就绪啊,阻塞啊,执行啊,挂起什么的,没意思.说说这个pcb吧,pcb的作用概括为一句话:pcb是进程存在的唯一标识. pcb控制块中的信息有四个,很重要:a)进程标识符 b)处理机状态 c)进程调度信息 d)进程控制信息.不具体讲了,太多了,哪天有空都背一遍(p42). pcb的组织方式:链表方式 和 索引方式. 2.进程控制:进程控制一般由操作系统的原语来实现的.啥事原语呢?官方给出了这样的定义:原语是用于完

超全的js正则表达式整理笔记_正则表达式

var reCat = new RegExp("cat", "gi"); //RegExp构造函数可以带一个或两个参数,第一个参数描述需要进行匹配的模式字符串,第二个参数指定了额外的处理命令 var reCat = /cat/gi; //使用Perl风格的语法 i:执行对大小写不敏感的匹配 g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) m:执行多行匹配 元字符  元字符是表达式语法的一部分,在正则表达式中用到的所有元字符有:{ [ ( \ ^ $ |