PHP正则表达式替换的相关概念:
preg_replace:执行正则表达式的搜索和替换
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) preg_replace:允许你替换字符串中匹配到你定义的正则表达式。
一个简单的注释移除功能:
代码如下 | 复制代码 |
preg_replace('[(/*)+.+(*/)]', '', $val); |
这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -> '')。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。
在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。
replacement 可以包含 //n 形式或(自 PHP 4.0.4 起)$n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中 //0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从 1 开始)以取得子模式的数目。
对替换模式在一个逆向引用后面紧接着一个数字时(即:紧接在一个匹配的模式后面的数字),不能使用熟悉的 //1 符号来表示逆向引用。举例说 //11,将会使 preg_replace() 搞不清楚是想要一个 //1 的逆向引用后面跟着一个数字 1 还是一个 //11 的逆向引用。本例中的解决方法是使用 /${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。
例子1:
代码如下 | 复制代码 |
$jobname="行政办—RH021001前台秘书(职位编号:RH021001)"; $jobname=preg_replace("/(.*)/","",$jobname); $jobname=preg_replace("/.*—.*01/","",$jobname); //输出:前台秘书 |
例子2:
代码如下 | 复制代码 |
$str="<a href="space.php?uid=109">fsb</a>";s<a href="space.php?uid=109&do=thread&id=174">注意调节心态 预防职场心理疲劳</a>"; $str=preg_replace("/space.php?uid=(d+)&do=thread&id=(d+)/","/space-0-do-thread-id-${2}.html",$str); $str=preg_replace("/space.php?uid=(d+)/","/space-${1}.html",$str); //输出:<a href="space.php?uid=109">fsb</a>";s<a href="/space-0-do-thread-id-174.html">注意调节心态 预防职场心理疲劳</a> |
例子3: 正则提取或替换img标记属性
代码如下 | 复制代码 |
<?php /*PHP正则提取图片img标记中的任意属性*/ //1、取整个图片代码 //2、取width //3、取height //4、取src /*PHP正则替换图片img标记中的任意属性*/ //2、将src="https://img.lookmw.cn/images/20100516000.jpg"替换为src="https://img.lookmw.cn/uc/images/20100516000.jpg",并省去宽和高 ?> |