我不知道怎么回事...... 在尝试“解析”字符串中的变量时,我应该考虑什么,例如短语中的vBulletin?
离;
{username} you have two notifications
我已经检查了smarty / raintpl,并研究了所有这些的正则表达式,smarty / raintpl正是我需要的,唯一的问题是,它们都是从文件读取,我是从一个数据库,我需要的东西,如;
$username = "Bob";
$html = "{username} you have two notifications";
display($html);
如果我使用任何替换函数(regex / str_replace),这会降低脚本/网站的速度吗?
答案 0 :(得分:0)
您可以使用简单的正则表达式:
$matches = array();
$string = '{username} you have two notifications';
preg_match_all('/{(\w+)}/', $string, $matches);
print_r($matches);
哪个输出:
Array
(
[0] => Array
(
[0] => {username}
)
[1] => Array
(
[0] => username
)
)
或者如果你想要一些更先进的东西:
$matches = array();
$string = '{username or something=3} you have two notifications';
preg_match_all('/{([^}]+)}/', $string, $matches);
print_r($matches);
同样地给你:
Array
(
[0] => Array
(
[0] => {username or something=3}
)
[1] => Array
(
[0] => username or something=3
)
)
我建议尽可能严格 - 即确切地知道你想要允许的内容并且只允许它(即小写字母或数字和空格) - 从长远来看它会使它变得更简单。
可以选择使用外部模板引擎,例如smarty,twig或dwoo,但根据您的项目,您可能会发现这种过度杀伤。