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

发布于 2022-09-12 23:05:14 字数 491 浏览 16 评论 0

类似于这样的字符串:

$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);

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

知你几分 2022-09-19 23:05:14

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

诗笺 2022-09-19 23:05:14

我只知道js写法

str.replace(/(,|<|>)/g,'').replace(/(type|code)([^(type|code)]*)/g, '$1:$2,')
橘寄 2022-09-19 23:05:14

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文