【发布时间】:2018-05-02 21:00:39
【问题描述】:
我想要什么:
要替换的值在{{}}之间。
输入: “这是字母 {{ A }} 和 {{ B }}”
但它可以改变:“这是字母 {{ AAAA }} 和 {{ BBB }}”
带数组(“C”,“D”)
输出:“这是字母C和D
我事先不知道{{ }} 之间的字符串,我想提取这些字符串并用另一个值替换它们:
我尝试了什么:
$body = "This is a body of {{awesome}} text {{blabla}} from a book.";
//Only work if we know the keys (awesome, blabla,...)
$text["awesome"] = "really cool";
$text["blabla"] = "";
echo str_replace(array_map(function($v){return '{{'.$v.'}}';}, array_keys($text)), $text, $body);
结果:
This is a body of really cool text from a book.
问题:
我找不到类似于这个已经问过的东西(只有当我们知道括号之间的旧内容之前,但我的内容是“动态的”),所以使用 array_map 或 的解决方案preg_replace_callback 不起作用。
知道我该怎么做吗?
【问题讨论】:
-
那么,你的实际问题的例子是什么,而不是你已经解决了什么?你想在
{{}}之间执行代码,从对象中查找值还是什么? -
您要替换的字符串中有多少个带有
{{}}的单词?只有 2 个 -
@chris85 是的,它被标记为重复,我看到了您提供的链接,但我的问题不同(即使与已经提出的问题非常相似,我在发布问题之前已经阅读了所有答案,没有像我的问题)
-
@user2486 他们用“测试二”替换“测试”,在我的情况下我不知道“测试”
-
@chris85 我知道要替换什么值,因为它在 {{ }} 之间,所以我想用数组替换“这是字母 {{ A }} 和 {{ B }}”(“C ", "D")=> "这是字母 C 和 D"
标签: php regex preg-replace-callback