您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 阿坝分类信息网,免费分类信息发布

preg_replace替换内容中间部分

2024/3/21 18:18:00发布40次查看
需求是这样:用正则匹配一个html文件中标记中的图片地址
最初的实现:
$img = '';$newimg = preg_replace('//i','',$img);echo $newimg;
这样虽然没有问题,但是不符合我最初的想法,我的想法是只替换src里的内容,保留左右两边的标签及属性。看手册,对preg_replace()中第二个参数有这样的描述:
replacement中可以包含后向引用\\n 或(php 4.0.4以上可用)$n,语法上首选后者。每个这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n 可以是0-99,\\0和$0代表完整的模式匹配文本。 捕获子组的序号计数方式为:代表捕获子组的左括号从左到右, 从1开始数。
“翻译”成菜鸟语言就是正则表达式中的每个组可以在该参数中用\\n或者$n代替
ok,对程序做个小改造就可以满足需求啦
$img = '';$newimg = preg_replace('/()/','$1aaa.jpg$3',$img);echo $newimg;

bbb.jpg%e6%9c%ac%e6%9d%a5%e5%8f%af%e4%bb%a5%e7%94%a8%242%e8%a1%a8%e7%a4%ba%ef%bc%8c%e4%bd%86%e6%98%af%e8%bf%99%e9%87%8c%e6%88%91%e4%bb%ac%e9%9c%80%e8%a6%81%e8%bf%9b%e8%a1%8c%e6%9b%bf%e6%8d%a2%ef%bc%8c%e6%89%80%e4%bb%a5%e7%9b%b4%e6%8e%a5%e7%94%a8aaa.jpg%e6%9b%bf%e6%8d%a2%e5%b0%b1ok%ef%bc%9b
style=max-width:90% ..>分为组3,同1
done
在手册中也说到这样一个问题,如果我们的aaa.jpg要更名为1.jpg 那么replacement就变成了$11.jpg$3,组1的名产生了歧义,办法就是改成${1}1.jpg${3},所以在实际应用中,无论会不会产生歧义,加上大括号更严谨些
以上就介绍了preg_replace替换内容中间部分,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
阿坝分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录