PHP快速替换字符间字符串内内容的方法
在创建自动电子邮件时,需要将电子邮件的某些部分替换为存储的数据 亲爱的PHP快速替换字符间字符串内内容的方法,php,variables,str-replace,Php,Variables,Str Replace,在创建自动电子邮件时,需要将电子邮件的某些部分替换为存储的数据 亲爱的%first\u name%%names%,感谢您参加%place\u name% 这可以用字符串替换来完成,但是必须有一个更快的方法 假设变量名与我们希望从系统中获得的相同,例如,%first\u name%应替换为$user['first\u name']等…您可以使用数组值替换%之间的键: $fields = array('first_name' => 'Tim', 'place_name' => 'Cana
%first\u name%%names%
,感谢您参加%place\u name%
这可以用字符串替换来完成,但是必须有一个更快的方法
假设变量名与我们希望从系统中获得的相同,例如,%first\u name%
应替换为$user['first\u name']
等…您可以使用数组值替换%
之间的键:
$fields = array('first_name' => 'Tim', 'place_name' => 'Canada');
$string = preg_replace_callback('/%(.+?)%/', function($arr) use($fields)
{
$key = $arr[1];
return array_key_exists($key, $fields) ? $fields[$key] : $arr[0];
}, $string);
您可以使用数组值替换%
之间的键:
$fields = array('first_name' => 'Tim', 'place_name' => 'Canada');
$string = preg_replace_callback('/%(.+?)%/', function($arr) use($fields)
{
$key = $arr[1];
return array_key_exists($key, $fields) ? $fields[$key] : $arr[0];
}, $string);
一种选择:
$vars = array(
'firstname' = 'Bob',
'surname' = 'Dole',
'place' = 'Las Vegas',
// ...
);
extract($vars);
include('my_template.phtml');
在my_template.phtml中:
<?php
echo <<<EOF
Dear $firstname $surname,<br>
Thank you for attending the Viagra and Plantains Expo in $place.
EOF;
?>
如果在使用时担心名称冲突,则始终可以使用EXTR\u PREFIX\u ALL
选项或其他提取方法之一
或者,更好的是,不要重新发明轮子。只要使用或
另请参见此问题:一个选项:
$vars = array(
'firstname' = 'Bob',
'surname' = 'Dole',
'place' = 'Las Vegas',
// ...
);
extract($vars);
include('my_template.phtml');
在my_template.phtml中:
<?php
echo <<<EOF
Dear $firstname $surname,<br>
Thank you for attending the Viagra and Plantains Expo in $place.
EOF;
?>
如果在使用时担心名称冲突,则始终可以使用EXTR\u PREFIX\u ALL
选项或其他提取方法之一
或者,更好的是,不要重新发明轮子。只要使用或
另请参见此问题:巧妙地使用闭包,这需要更新版本的PHP@Kristian:PHP5.3,引入匿名函数语法的版本,3年前发布。我不认为它是新的,我希望每个人都升级到至少那个版本。永远不要低估代码/版本要求的力量来有力地减慢从巧妙地使用闭包的升级,这需要更新的版本。PHP@Kristian:PHP 5.3,引入匿名函数语法的版本,三年前发行的。我不认为它是新的,我希望每个人都升级到至少那个版本。永远不要低估代码/版本要求的力量来有力地减缓从1发生的升级。这就是我在输出视图时所做的,我建议。it@Kristian:是的,CakePHP和其他很多框架/库可能都是这样做的,尽管通常都有额外的功能,比如输出缓冲,在Cake 2.0中还有视图块和视图继承it@Kristian:是的,CakePHP和很多其他框架/库都是这样做的,尽管通常有额外的特性,如输出缓冲,在Cake 2.0中还有视图块和视图继承。