PHP快速方式替换字符串之间的字符串内容

时间:2012-07-30 15:36:29

标签: php variables str-replace

在创建自动电子邮件时,电子邮件的某些部分需要替换为存储的数据。

例如。亲爱的%first_name% %surname%,感谢您参加%place_name%

这可以通过每个字符串替换来完成,但必须有更快的方法。

假设变量名称与我们想要的系统相同,例如。 %first_name%应替换为$user['first_name']等....

2 个答案:

答案 0 :(得分:2)

您可以利用preg_replace_callback替换%与数组值之间的关键字:

$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);

答案 1 :(得分:2)

一个选项:

$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;
?>

如果您在使用extract()时担心名称冲突,可以始终使用EXTR_PREFIX_ALL选项或其他提取方法之一。

或者,更好的是,不要重新发明轮子。只需使用Smartymustache.php

另请参阅此问题:PHP template class with variables?