我有一个简单的regex:/((\[#)(\w+)(\]))/g
。
这会捕获我想捕获的组。示例组为[#recipient]
。我需要捕获开头[#
并替换为{{
离开\w+
并捕获结束]
并将其替换为}}
,以便此字符串可以是使用twig的字符串加载器扩展包含在twig
电子邮件模板中。
TLDR ;目标是转换:[#recipient]
{{recipient}}
,无论内容词\w+
是什么。
我对正则表达式不是很熟悉,而且基本preg_match
以外的任何东西都超出了我的能力范围。我应该使用str_replace
吗?我担心用户忘记关闭语句并使用字符串替换的情况我无法确保\w+
匹配。
答案 0 :(得分:1)
您可以在PHP中使用此正则表达式:
$re = '\[#(\w+)\]';
$str = "Hello [#recipient] how are you today?\n\nThis email is writing to inform you of [#message]\n\nregards,\n[#from]\n[#website]";
$subst = "{{$1}}";
$result = preg_replace($re, $subst, $str);
如果您想允许[#...]
中的任何文字:
$re = '\[#([^]]+)\]';