preg_replace和大括号{}

时间:2016-07-17 14:31:48

标签: php

我想制作一个电子邮件模板以及如何替换方括号{}和方括号{}中的所有内容?

$template = "My name is {NAME}. I'm {AGE} years old.";
$template = preg_replace("{NAME}", "Tom", $template);
$template = preg_replace("{AGE}", "10", $template);

之后应该是这样的: 我叫汤姆。我10岁了。

4 个答案:

答案 0 :(得分:5)

使用str_replace代替preg_replace

$template = "My name is {NAME}. I'm {AGE} years old.";
$template = str_replace("{NAME}", "Tom", $template);
$template = str_replace("{AGE}", "10", $template);

答案 1 :(得分:1)

正则表达式模式应该在开头和结尾都有分隔符

$template = "My name is {NAME}. I'm {AGE} years old.";
$template = preg_replace("/{NAME}/", "Tom", $template);
echo $template = preg_replace("/{AGE}/", "10", $template);

答案 2 :(得分:1)

您可以将preg_replace()与下面的单行一起使用(优于str_replace()): -

$template = "My name is {NAME}. I'm {AGE} years old.";
$find = array('/{NAME}/', '/{AGE}/');
$replace = array('TOM', '10');
$template = preg_replace($find, $replace, $template);

echo $template;

输出: - https://eval.in/606528

注意: - 它有以下好处: -

<强> 1 即可。单行代码可以替换您想要的所有内容。不需要一次又一次str_replace()

<强> 2 即可。如果将来需要更多替换,那么您必须将它们添加到$find$replace中,并将其添加到str_replace()<?php $template = "My name is {NAME}. I'm {AGE} years old."; $find = array('{NAME}', '{AGE}'); $replace = array('TOM', '10'); $template = str_replace($find, $replace, $template); echo $template; 。所以它更灵活。

抱歉,我完全忘记提及<script> System.config({ map: { app: "/app", rxjs: '/lib/rxjs' // added this map section<------ }, packages:{ app: { defaultJSExtensions:"js",}, rxjs: { defaultExtension: "js" } // and added this to packages }, paths: { '/app/*': '/app/*' }, }); System.import("/app/main") .then(null, console.error.bind(console)); 也适用于数组,所以你也可以像下面这样做: -

vertical-align:top;

输出: - https://eval.in/606577

注意: - 两者都同样好。你可以去任何一个。感谢

答案 3 :(得分:1)

在这种情况下,

preg_replace不是正确的功能。在这种情况下,正确的选项是str_replacestr_ireplace。但是,对于要格式化的大量数据,使用正则表达式会更好:

$associative_formatter_array = array('NAME' => 'Tom', "AGE" => '10');
$template = "My name is {NAME}. I'm {AGE} years old.";
$template = preg_replace_callback("`\{([^\}]*)\}`g", function($match) {
  return $_GLOBALS["associative_formatter_array"][$match[1]];
});