问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP正则表达式的使用技巧

发布网友 发布时间:2023-04-12 23:02

我来回答

1个回答

热心网友 时间:2023-10-08 13:21

  PHP正则表达式的定义

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

  PHP中的正则函数

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

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

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

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

  PCRE正则表达式

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

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

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

  常用的元字符(Meta character)

  元字符     说明

  /A       匹配字符串串首的原子

  /Z       匹配字符串串尾的原子

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

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

  /d     匹配一个数字 等价于[ ]

  /D     匹配除数字以外任何一个字符 等价于[^ ]

  /w     匹配一个英文字母 数字或下划线 等价于[ a zA Z_]

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

  /s     匹配一个空白字符 等价于[/f/t/v]

  /S     匹配除空白字符以外任何一个字符 等价于[^/f/t/v]

  /f     匹配一个换页符等价于 /x c 或 /cL

  匹配一个换行符 等价于 /x a 或 /cJ

  匹配一个回车符等价于/x d 或 /cM

  /t     匹配一个制表符 等价于 /x /或/cl

  /v     匹配一个垂直制表符 等价于/x b或/ck

  /oNN   匹配一个八进制数字

  /xNN   匹配一个十六进制数字

  /cC    匹配一个控制字符

  模式修正符(Pattern Modifiers)

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

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

  M     -将字符串视为多行

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

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

  U     -匹配到最近的字符串

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

  格式 /apple/i匹配 apple 或 Apple 等 忽略大小写      /i

  PCRE的模式单元

  // 提取第一位的属性

  /^/d{ } ([/W])/d{ }// /d{ }$匹配 / / 等字符串 但上述正则表达式不匹配 / 的格式 这是因为模式 [/W] 的结果 / 已经被存储 下个位置 / 引用时 其匹配模式也是字符 /

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

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

  PCRE正则表达式函数

  以下为引用的内容

  preg_match()和preg_match_all()   preg_quote()   preg_split()   preg_grep()   preg_replace()  

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

  匹配action属性

  以下为引用的内容

  $str = ;       $match = ;       preg_match_all( //s+action=/ (?!)( *?)/ /s/ $str $match);       print_r($match);   

  在正则中使用回调函数

  以下为引用的内容

  /**      * replace some string by callback function      *      */    function callback_replace() {         $url = ;         $str = ;         $str = preg_replace ( /(?<=/saction=/ )(?!)( *?)(?=/ /s)/e search(/$url // ) $str );                  echo $str;     }          function search($url $match){         return $url / $match;     }   

  带断言的正则匹配

  以下为引用的内容

  $match = ;      $str = xxxxxx cn bold font  paragraph text

   ;      preg_match_all ( /(?<=<(/w{ })>) *(?=</// >)/ $str $match );      echo 匹配没有属性的HTML标签中的内容 ;      print_r ( $match );   

  替换HTML源码中的地址

  以下为引用的内容

  $form_ = preg_replace ( /(?<=/saction=/ |/ssrc=/ |/s)(?!|javascript)( *?)(?=/ /s)/e add_url(/$url / // / ) $form_ );   

lishixin/Article/program/PHP/201311/21027
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
从焦作市到郑州快递一个羽毛球拍需用多少钱 iPhone X还能坚挺两年,升级到ios 15发热严重要靠红魔冰磁散热器 Peltier Module散热方式 一加18W冰点散热背夹-超强散热,极速降温 2015年春晚有哪些明星 新闻 如何评价央视主持人朱军?以及如何评价朱军所主持的《艺术 纯粮食白酒品牌大全,让你喝得放心(真正的纯粮食白酒有哪些品牌)_百度... ...工作单位要辞退并提出会给出相应赔偿,但合同马上到期,如到期后... ABC外语培训学校ABC教育集团总裁——刘成 abc是国产品牌吗?口碑如何? premiere问题? 版本是 cc2015用的注册机破解的,可以正常使用,但是每次打开时 机械设计的主要流程是什么? 机械设计的一般流程是什么 汽车雷达滴滴响什么原因? 碟鱼的做法? 在国内如何炒外汇 徙举的结构徙举的结构是什么 徙民的结构徙民的结构是什么 2022年全国公务员考试成绩查询时间 郑州教师资格证培训班哪个好一些急求? 郑州宏鹏云教育有教师资格证面试培训班吗? 远程监控如何交流量费用 车车安行车记录仪怎么交流量费? 南派三叔盗墓笔记什么时候完结? 南派三叔的盗墓笔记共有几本?详细 公司账户恢复开通需要多久 企业被吊销后再申请恢复登记需要多久 菽藟的解释 时无常态什么意思 情侣一人一句秀恩爱话(通用120句) 兄弟们介绍个,在苹果系统中怎么装photoshop呀?,快解答哦 摩托罗拉手机拍照位置不准怎么调 摩托罗拉x40宽幅拍照怎么设置? 摩托罗拉s3前拍照没有美颜吗 联想平板售后时要带着盒子吗? 卫生间防水免砸砖方法是什么效果好不好 微信设置没有文件管理怎么办? 华为mateviewgt34无法调亮度 阿诺德快发角球犯规吗 瘟疫传说阿诺德是谁 腓特烈一世生平简介,腓特烈一世历史评价,腓特烈一世怎么死的? 梦见被蛇咬了手指的预兆 梦见暖水瓶胆破碎的预兆 梦见暖壶漏水的预兆 急急急!!!mai a mi什么意思?? 梦见从很高的悬崖上掉下去 古诗《范成大·横塘》诗词注释与赏析 韦应物《横塘行》原文及翻译赏析 三一挖掘机155怎么启动 被永久封了怎么注销账号?