preg_replace正则表达式替换函数对于我来说,现在非常喜欢它。不仅能准确、快速的处理字符串,还能让我从新审视正则表达式的重要性。正则表达式语言对于我来说,就像人类听不懂鸟语一样,想懂它却那么难以交流,看来是要好好的学习学习正则表达式语法啦。这里有30分钟正则表达式入门教程,多么想和他熟悉熟悉,懂他能给工作带来很大的方便,所以拿下正则表达式是迫在眉睫的事情。

preg_replace — 执行一个正则表达式的搜索和替换

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

说明:搜索subject中匹配pattern的部分, 以replacement进行替换。

preg_replace参数补充说明:

1、replacement 可以包含 \\n 形式或 $n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中 \\0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从 1 开始)以取得子模式的数目。

2、对替换模式在一个逆向引用后面紧接着一个数字时(如 \\11),不能使用 \\ 符号来表示逆向引用。因为这样将会使 preg_replace() 搞不清楚是想要一个 \\1 的逆向引用后面跟着一个数字 1 还是一个 \\11 的逆向引用。解决方法是使用 \${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。

3、上述参数除 limit 外都可以是一个数组。如果 pattern 和 replacement 都是数组,将以其键名在数组中出现的顺序来进行处理,这不一定和索引的数字顺序相同。如果使用索引来标识哪个 pattern 将被哪个 replacement 来替换,应该在调用 preg_replace() 之前用 ksort() 函数对数组进行排序。

下面列举一些preg_replace的例子:

echo preg_replace("/[0-9]/","",$str);//去掉所有数字

echo preg_replace("/[a-z]/","",$str); //这样是去掉所有小写字母

echo preg_replace("/[A-Z]/","",$str); //这样是去掉所有大写字母

echo preg_replace("/[a-z,A-Z]/","",$str); //这样是去掉所有字母

注:开头结尾出现斜杠(/),是告诉解析器双斜杠里面的内容即为正则表达式,也是声明正则表达式的标志,就像声明PHP变量用$一样。一对中括号([ ])里的内容,即是要查找替换的内容。

网络茶馆向我提了一个正则表达式的问题,解决办法如下:

//需求:去掉[url][/url]之间内容

$content = "今天是2013年01月02号[url=http:/./tech.42xiu.com]复制链接[/url]是新年的第二天。";

echo preg_replace("/\[url.*\[\/url\]/", "", $content); //结果:今天是2013年01月02号是新年的第二天。

注:本例中左中括号和右中括号,是要匹配的一部分,所以需要反斜杠(\)来转义[和],(何为转义:失去它原来的意义,元素不在特殊)

preg_replace高深之处在于,可以解析自定义的html写法,举个例子:

$template = preg_replace("/[\n\r\t]*\{css\s+(.+?)\}[\n\r\t]*/ies", "\$this->cssTags('\\1')", $template);

$template = preg_replace("/[\n\r\t]*\{script\s+(.+?)\}[\n\r\t]*/ies", "\$this->scriptTags('\\1')", $template);

$template = preg_replace("/\{lang\s+(.+?)\}/ies", "\$this->languageVar('\\1')", $template);

//以上正则替换,都是为了解析html模版中出现的{css ****}、{script *****}、{lang ****}等语法,这样自己可以写一套模版引擎之类的,很好的做到html与脚本分离。

其实,最最最重要的,还是要学会如何使用正则表达式,只有熟练的使用正则表达式,这些像preg_replace的函数用起来才能游刃有余,你说呢?所以正则表达式对于程序员来说,是必经之路啊。

本文由PHP乐知博客提供 http://tech.42xiu.com

php正则表达式替换,PHP正则表达式替换函数preg_replace相关推荐

  1. 28Python正则表达式、正则表达式对象、正则表达式修饰符、表达式模板、表达式实例、match函数、search方法、检索和替换、repl、compile、findall等

    28Python正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. ...

  2. php 正则报错,PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析...

    本文实例讲述了PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法.分享给大家供大家参考,具体如下: 环境错误级别:error ...

  3. php正则表达式函数案例,PHP正则表达式函数preg_replace用法实例分析

    PHP正则表达式函数preg_replace用法.,具体如下: preg_replace 执行一个正则表达式的搜索和替换 语法:preg_replace (pattern ,replacement , ...

  4. php preg_replace 用法,PHP正则表达式函数preg_replace用法实例分析

    本文实例讲述了PHP正则表达式函数preg_replace用法.分享给大家供大家参考,具体如下: preg_replace 执行一个正则表达式的搜索和替换 语法:preg_replace (patte ...

  5. php正则表达式函数 preg_replace用法

    preg_replace (PHP 3>= 3.0.9, PHP 4 ) preg_replace -- 执行正则表达式的搜索和替换 说明 mixed preg_replace ( mixed ...

  6. 正则表达式用单个空格替换多个空格

    给定一个像这样的字符串: "The dog has a long tail, and it is RED!" 什么样的jQuery或JavaScript魔术可以用来将空间限制为最多 ...

  7. python正则表达式替换excel_在 Excel 中使用正则表达式进行查找与替换

    在 Excel 中,使用 Alt+F11 快捷键打开 VBA 项目窗口,在左侧的工作表名称上点右键,选择查看代码,即可出出现右侧的代码编辑窗口 在代码窗口中输入以下代码: Private Sub Re ...

  8. 站长在线Python精讲:在Python中使用正则表达式的sub()方法替换字符串详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用正则表达式的sub()方法替换字符串详解>. 在Python中使用正则表达式的sub()方法替换字符串. ...

  9. python 正则式替换_python 正则表达式参数替换实例详解

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...

最新文章

  1. 计算路由汇总的方法(CIDR)
  2. php读取远程二进制文件,php 读取二进制文件
  3. Android studio 使用SVN需要忽略的文件
  4. 深入浅出Mybatis系列(一)---Mybatis入门[转]
  5. python 彩票分析_294期钱哥福彩3D预测奖号:杀号分析
  6. 母亲节微信公众号走心文章就用来逗编辑器排版
  7. 修复oracle注册表,老司机修复oracle卸载干净【调解方案】
  8. SPSS 数据清理-基础
  9. C语言 字符‘0‘和‘\0‘ 以及整数0的区别
  10. ArcEngine编辑模块——将线段按距离、按比例分割成N条线段
  11. Linux中国对话龙蜥社区4位理事:龙蜥操作系统捐赠的背后,是谁在推动?
  12. HTML相对路径的写法
  13. 最简单启动vue前端项目
  14. 云计算介绍 TCP/IP协议以及配置
  15. 技术探究 通用场景描述(Universial Scene Description, USD)
  16. Deepin/Ubuntu debian系的Linux下更新nvidia显卡驱动(初次安装也可以选择该方案)
  17. 如何在一个页面调用另一个页面
  18. 趋肤效应实验报告_无线电能传输(课程设计报告)实验报告
  19. RdhA蛋白序列发育树构建及iTol美化
  20. Axure电商后台业务管理系统原型模板/通用版电商后台管理系统/订单管理/营销管理/运营管理/财务管理/统计分析/库存管理/流量统计/运营管理/用户管理/秒杀促销/交易统计/活动管理/广告管理

热门文章

  1. Nginx Etag学习
  2. 【Windows Server 2019】网络负载均衡服务配置与管理——理论+网络拓扑及说明
  3. 使用JS分页 span beta 3.0 完成封装的分页
  4. isEmpty和isBlank的区别
  5. Jenkins持续集成自动化测试实战(下篇)
  6. 兄弟3160CDW报No Waste Toner或WT Box End Soon错误
  7. 夏季养生冷知识,帮你健康度长夏!
  8. listagg结果去重
  9. 【网络教程】如何安装inspect.exe
  10. printk 续行问题