PHP 正则表达式不起作用 - 解析 {{tags}}

标签 php regex

我想做的是它解析以下字符串的方式是 {{}} 中的所有占位符都被替换为“默认”指示的值。例如,{{time, default=noon}} 应该变成 noon

这是我试过的代码:

$input = 'It was a {{color, default=black}} and scary {{phase}}. As the {{animals, default=dogs}} {{make_sound, default=barked}} and the trees swayed {{setting, default=to the breeze}}, a {{size, default=}} {{monster, default=troll}} that emerged from the shadows.';
$input = preg_replace('/\{\{.*default=(\w+)\}\}/i', '$1', $input);
echo $input;

产生的输出是:输出:这是一个从阴影中出现的巨魔。

为什么剩余的模式没有被正确解析?

最佳答案

{{[^}]*\bdefault=([^}]*)}}

你可以试试这个。替换为 $1。查看演示。

https://regex101.com/r/aG0sF5/4

关于PHP 正则表达式不起作用 - 解析 {{tags}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522254/

相关文章:

php - 如何使用 GCM 在 android 中发送小图像和大图像作为推送通知

php - MySQL COUNT 与 GROUP 和 JOIN

javascript - 前瞻表现得像在消耗

c# - 正则表达式 - 匹配不匹配字母字符子集的字母字符 (C#)

regex - 正则表达式匹配部分或全部字符串

匹配 xa?b?c? 的正则表达式但不只是x

php - 我该怎么做才能在 php mysql 的一个变量中获取 2 个不同的行?

php - 如何正确制作独立的 nginx 和 php-fpm 容器

javascript - 如何在 html 或 javascript 中将 ID 更改为类

php - 具有非捕获组的 REGEX 条件