【问题标题】:How could I replace a substring with a variable?如何用变量替换子字符串?
【发布时间】:2021-08-03 07:53:50
【问题描述】:

我有一个格式如下的字符串:

$string = 'I am {{[1,100]}}'

我如何添加这些值并将{{[x,y]}} 的实例替换为这些值之间的随机整数?

在提供的示例中,字符串将变为:

$string = 'I am 47'

【问题讨论】:

  • 可能是 preg_replace_callback 并使用 rand 函数中的匹配项。
  • @user3783243 你能提供一个我的用例的例子吗?
  • 欢迎来到 Stack Overflow! StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • @Barmar 我做了,我已经包含了我所拥有的但不知道从这里去哪里 - 能够让第一阶段工作但不知道该怎么做。
  • 顺便说一句,如果您将数组的键更改为包含{{}},您可以只调用一次strtr(),而不是使用str_replace() 循环。

标签: php arrays regex


【解决方案1】:

使用preg_replace_callback()。这使用一个函数从输入的匹配部分计算替换。该函数可以使用rand()返回给定范围内的随机数,该随机数来自正则表达式中的捕获组。

$string = preg_replace_callback('/\{\{\[(\d+),(\d+)\]\}\}/', function($matches) {
    return rand($matches[1], $matches[2]);
}, $string);

【讨论】:

  • 嘿伙计,一个无关紧要的问题;当您像上面那样在调用函数内部创建函数时,它会调用什么?我正在尝试了解这一点,但我什至不知道在哪里看,因为我不知道它叫什么 xD
  • 这是一个匿名函数。 php.net/manual/en/functions.anonymous.php
  • 太棒了!谢谢你的帮助我的朋友:)
猜你喜欢
  • 2017-06-21
  • 2020-07-09
  • 2011-09-29
  • 2021-07-04
  • 2013-02-16
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 2017-06-29
相关资源
最近更新 更多