0

0

PHP中的正则函数_PHP教程

php中文网

php中文网

发布时间:2016-07-21 14:53:22

|

1048人浏览过

|

来源于php中文网

原创

  php正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用php正则表达式需要综合考虑。

  我的PHP正则入门,是起源于网上的一篇文章,这篇文章由浅入深的阐述了PHP正则表达式使用的方法,我觉得是一个很好的入门材料,不过学成还是要 靠个人,在使用的过程中,还是会不断地忘记,因此反反复复的阅读了这篇文章有四五遍,对于其中一些比较困难的知识点,甚至要用很久才能消化,但是只要能见 坚持着看完,你会发现自己对于正则的运用能力就会显著提高。

  PHP正则表达式的定义:

  用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。

  PHP中的正则函数:

立即学习PHP免费学习笔记(深入)”;

  PHP中有两套正则函数,两者功能差不多,分别为:

  一套是由PCRE(Perl Compatible Regular Expression)库提供的。使用“preg_”为前缀命名的函数;

  一套由POSIX(Portable Operating System Interface of Unix )扩展提供的。使用以“ereg_”为前缀命名的函数;(POSIX的正则函数库,自PHP 5.3以后,就不在推荐使用,从PHP6以后,就将被移除)

  由于POSIX正则即将推出历史舞台,并且PCRE和perl的形式差不多,更利于我们在perl和php之间切换,所以这里重点介绍PCRE正则的使用。

  PCRE正则表达式

  PCRE全称为Perl Compatible Regular Expression,意思是Perl兼容正则表达式。

  在PCRE中,通常将模式表达式(即正则表达式)包含在两个反斜线“/”之间,如“/apple/”。

  正则中重要的几个概念有:元字符、转义、模式单元(重复)、反义、引用和断言,这些概念都可以在文章[1]中轻松的理解和掌握。

  常用的元字符(Meta-character):

  元字符 说明

  A 匹配字符串串首的原子

  Z 匹配字符串串尾的原子

  b 匹配单词的边界 /bis/ 匹配头为is的字符串 /isb/ 匹配尾为is的字符串 /bisb/ 定界

  B 匹配除单词边界之外的任意字符 /Bis/ 匹配单词“This”中的“is”

  d 匹配一个数字;等价于[0-9]

  D 匹配除数字以外任何一个字符;等价于[^0-9]

  w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]

  W 匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_]

  s 匹配一个空白字符;等价于[ftv]

  S 匹配除空白字符以外任何一个字符;等价于[^ftv]

  f 匹配一个换页符等价于 x0c 或 cL

  匹配一个换行符;等价于 x0a 或 cJ

  匹配一个回车符等价于x0d 或 cM

  t 匹配一个制表符;等价于 x09或cl

  v 匹配一个垂直制表符;等价于x0b或ck

  oNN 匹配一个八进制数字

  xNN 匹配一个十六进制数字

  cC 匹配一个控制字符

  模式修正符(Pattern Modifiers):

  模式修正符在忽略大小写、匹配多行中使用特别多,掌握了这一个修正符,往往能解决我们遇到的很多问题。

  i -可同时匹配大小写字母

  M -将字符串视为多行

  S -将字符串视为单行,换行符做普通字符看待,使“.”匹配任何字符

  X -模式中的空白忽略不计

  U -匹配到最近的字符串

  e -将替换的字符串作为表达使用

  格式:/apple/i匹配“apple”或“Apple”等,忽略大小写。 /i

动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版
动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版

动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包

下载

  PCRE的模式单元:

  //1 提取第一位的属性

  /^d{2} ([W])d{2}1d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01 4321”等字符串。但上述正则表达式不匹配“12/34-5678”的格式。这是因为模式“[W]”的结果“/”已经被存储。下个位置“1”引用 时,其匹配模式也是字符“/”。

  当不需要存储匹配结果时使用非存储模式单元“(?:)”

  例如/(?:a|b|c)(D|E|F)1g/ 将匹配“aEEg”。在一些正则表达式中,使用非存储模式单元是必要的。否则,需要改变其后引用的顺序。上例还可以写成/(a|b|c)(C|E|F)2g/。

  PCRE正则表达式函数:

  preg_match()和preg_match_all()

  preg_quote()

  preg_split()

  preg_grep()

  preg_replace()

  函数的具体使用,我们可以通过PHP手册来找到,下面分享一些平时积累的正则表达式:

  匹配action属性

  $str = '';

  $match = '';

  preg_match_all('/s+action="(?!http:)(.*?)"s/', $str, $match);

  print_r($match);

  在正则中使用回调函数

  /**

  * replace some string by callback function

  *

  */

  function callback_replace() {

  $url = 'http://esfang.house.sina.com.cn';

  $str = '';

  $str = preg_replace ( '/(?

  echo $str;

  }

  function search($url, $match){

  return $url . '/' . $match;

  }

  带断言的正则匹配

  $match = '';

  $str = 'xxxxxx.com.cn bold font

  paragraph text

  ';

  preg_match_all ( '/(?).*(?=1>)/', $str, $match );

  echo "匹配没有属性的HTML标签中的内容:";

  print_r ( $match );

  替换HTML源码中的地址

  $form_html = preg_replace ( '/(?

  最后,正则工具虽然强大,但是从效率和编写时间上来讲,有的时候可能没有explode来的更直接,对于一些紧急或者要求不高的任务,简单、粗暴的方法也许更好。

  而对于preg和ereg两个系列之间的执行效率,曾看到文章说preg要更快一点,具体由于使用ereg的时候并不多,而且也要推出历史舞台了,再加个个人更偏好于PCRE的方式,所以笔者就不做比较了,熟悉的朋友可以发表下意见,谢谢。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/371399.htmlTechArticlePHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号