问答

如何让正则表达式匹配多处替换不同的值

作者:admin 2021-04-10 我要评论

类似于这样的字符串: $str = 'type内容,code数字,type字母code内容,type数字,type字母'; 期望得到的替换结果: type:1内容,code:1数字,type:2字母code:2内...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

类似于这样的字符串:

$str = '
<type>内容,<code>数字,<type>字母
<code>内容,<type>数字,<type>字母
';

期望得到的替换结果:

type:1内容,code:1数字,type:2字母
code:2内容,type:3数字,type:4字母

正则表达式构思为:

$p = [
'/^<(type)>$/',
'/^<(code)>$/',
];

替换为:

$res = '${1}:';//这里不知道怎么写

$str = preg_replace($p, $res, $str);

如果不用循环的话(要替换的标签很多),单纯用数组怎么实现起来会性能高一点,优雅一点呢?
感谢大佬,卡一天了。

###

js的实现方式,php可以使用preg_replace_callback
image.png

###

我只知道js写法

str.replace(/(,|<|>)/g,'').replace(/(type|code)([^(type|code)]*)/g, '$1:$2,')
###

看代码是 PHP
没有全部替换是你的 正则写法有问题
不要用 ^$

'/^<(type)>$/' 改成 '/<(type)>/'
'/^<(code)>$/' 改成 '/<(code)>/'

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器