gpt4 book ai didi

javascript - 在 php 中重新创建 js 正则表达式匹配函数

转载 作者:行者123 更新时间:2023-11-30 09:16:07 25 4
gpt4 key购买 nike

我对用 Javascript 编写的娱乐功能有疑问,要使其在 php 中运行。我认为我真的很接近,但不太了解 php 语法。所以我在 JS 中有类似的东西:

function convertStr(str, id) {
const regexExpression = new RegExp('PR|PD|DD|DPD|DP_AVG', 'g');
return str.replace(regexExpression, match => match + id);
}

所以我尝试在 php 中做同样的事情,我有这个:

$reg = "/PR|PD|DD|DPD|DP_AVG\g/";
$result = preg_replace($reg, ??, $str)

所以我不知道在“??”中放什么,因为我在 JS 中的理解是我的匹配箭头函数 match => match + id,但我无法执行它在 PHP 中。谁能帮忙?

最好的,

彼得

最佳答案

您不应该在 PHP preg 函数中使用全局修饰符,有特定的函数或参数可以控制此行为。例如。 preg_replace 默认替换输入字符串中的所有匹配项。

使用

function convertStr($str, $id) {
$regexExpression = '~PR|PD|DD|DPD|DP_AVG~';
return preg_replace($regexExpression, '$0' . $id, $str);
}

在这里,

  • ~PR|PD|DD|DPD|DP_AVG~ 是一个正则表达式,它匹配多个子串替代(注意 ~ 符号用作正则表达式分隔符,在 JS 中,您只能在正则表达式文字符号中为此使用 /)
  • 在替换中,$0表示整个匹配值(与JS regex中的$&相同),$id只是附加到那个值。

因此,在 JS 版本中,我建议使用

return str.replace(regexExpression, "$&" + id);

关于javascript - 在 php 中重新创建 js 正则表达式匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55009836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com