w3c php 正则_php正则如何替换所有符合条件的字符串

在php中可以使用“preg_replace”函数替换所有符号匹配条件的元素,其语法是【

preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)】。

19e9e3fe630acb552fd575347b197afd.png

PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素

需要我们用程序处理的数据并不总是预先以数据库思维设计的,或者说是无法用数据库的结构去存储的。

比如模版引擎解析模版、垃圾敏感信息过滤等等。

一般这种情况,我们用正则按我们的规则去匹配preg_match、替换preg_replace。

但一般的应用中,无非是些数据库CRUD,正则摆弄的机会很少。

根据前面说的,两种场景:统计分析,用匹配;处理用替换。

PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素。

代码如下:

preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)

大部分语言的正则表达式都是差不多的,不过也有细微的差异。

PHP 正则表达式定界符

大多数语言的正则表达式都是由“/”作为定界符的,而在PHP中,还可以使用“#”定界,如果字符串中包含大量“/”字符,在使用“/”定界的时候,就需要对这些“/”转义,而使用“#”就不需要转义,更简洁。<?php

$weigeti='W3CSchool 在线教程的网址是 http://e.jb51.net/ ,你能把这个网址替换成正确的网址吗?';

// 上面的要求就是把http://e.jb51.net/ 替换成 http://e.jb51.net/w3c/

// . : - 都是正则符号,所以需要转义,而 / 是定界符,如果字符串中包含 / 定界符,就需要转义

echo preg_replace('/http\:\/\/www\.jb51\.net\//','http://e.jb51.net/w3c/',$weigeti);

// 在 #作为定界符,/ 就不再是定界符的含义,就不需要转义了。

echo preg_replace('#http\://www\.jb51\.net/#','http://e.jb51.net/w3c/',$weigeti);

//上面两条输出结果都一样,【W3CSchool 在线教程的网址是 http://e.jb51.net/w3c/ ,你能把这个网址替换成正确的网址吗?】

?>

PHP 正则中文和忽略大小写PHP preg_replace() 是区分大小写的,同时只能匹配ASCII编码内的字符串,如果需要匹配不区分大小写和中文等字符需要添加相应的修饰符 i 或 u。<?php

$weigeti='W3CSchool 在线教程网址:http://www.jb51.net/w3school/';

echo preg_replace('/W3CSchool/','w3c',$weigeti);

//大小写不同,输出【w3c 在线教程网址:http://www.jb51.net/w3school/】

echo preg_replace('/W3CSchool/i','w3c',$weigeti);

//忽略大小写,执行替换输出【w3c 在线教程网址:http://e.jb51.net/w3c/】

echo preg_replace('/网址/u','',$weigeti);

//强制 UTF-8中文,执行替换,输出【W3CSchool 在线教程:http://www.jb51.net/w3school/】

?>

PHP 正则表达式在遇到换行符时,会将换行符当做字符串中间一个普通字符。而通用符号.不能匹配\n,所以遇到带有换行符的字符串正则会有很多要点。<?php

$weigeti="jb51.net\nIS\nLOVING\nYOU";

// 想要把上面$weigeti 替换成jb51.net

echo preg_replace('/^[A-Z].*[A-Z]$/','',$weigeti);

// 这个正则表达式是,匹配只包含\w的元素,$weigeti 是以V开头,符合[A-Z],而且结尾是U,也符合[A-Z]。.无法匹配\n

// 输出【jb51.net IS LOVEING YOU】

echo preg_replace('/^[A-Z].*[A-Z]$/s','',$weigeti);

// 这个用修饰符s,也就是 . 可以匹配 \n 了,所以整句匹配,输出空

// 输出【】

echo preg_replace('/^[A-Z].*[A-Z]$/m','',$weigeti);

// 这里使用了修饰符,将\n作为多行独立匹配。也就等价于:

/*

$preg_m=preg_replace('/^[A-Z].*[A-Z]$/m','',$weigeti);

$p='/^[A-Z].*[A-Z]$/';

$a=preg_replace($p,'','jb51.net');

$b=preg_replace($p,'','IS');

$c=preg_replace($p,'','LOVING');

$d=preg_replace($p,'','YOU');

$preg_m === $a.$b.$c.$d;

*/

// 输出【jb51.net】

?>

正则替换匹配变量向后引用

如果您熟悉Javascript,一定对$1 $2 $3 …… 等向后引用比较熟悉,而在 PHP 中这些也可以被当作向后引用参数。而在PHP中,还可以使用 \1 \1 来表示向后引用。

向后引用的概念就是匹配一个大片段,这个正则表达式内部又被用括号切割成若干小匹配元素,那么每个匹配元素就被按照小括号序列用向后引用代替。<?php

$weigeti='W3CSchool 在线教程网址:http://www.jb51.net ,你Jbzj!了吗?';

echo preg_replace('/.+(http\:[\w\-\/\.]+\/)[^\w\-\!]+([\w\-\!]+).+/','$1',$weigeti);

echo preg_replace('/.+(http\:[\w\-\/\.]+\/)[^\w\-\!]+([\w\-\!]+).+/','\1',$weigeti);

echo preg_replace('/.+(http\:[\w\-\/\.]+\/)[^\w\-\!]+([\w\-\!]+).+/','\\1',$weigeti);

// 上面三个都是输出 【http://www.jb51.net】

echo preg_replace('/^(.+)网址:(http\:[\w\-\/\.]+\/)[^\w\-\!]+([\w\-\!]+).+$/','栏目:$1
网址:$2
商标:$3',$weigeti);

/*

栏目:W3CSchool 在线教程

网址:http://www.jb51.net

商标:Jbzj!

*/

// 括号中括号,外面括号先计数

echo preg_replace('/^((.+)网址:(http\:[\w\-\/\.]+\/)[^\w\-\!]+([\w\-\!]+).+)$/','原文:$1
栏目:$2
网址:$3
商标:$4',$weigeti);

/*

原文:W3CSchool 在线教程网址:http://www.jb51.net ,你Jbzj!了吗?

栏目:W3CSchool 在线教程

网址:http://www.jb51.net

商标:Jbzj!

*/

?>

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值