1

我不知道该怎么说。在尝试“解析”字符串中的变量时我应该考虑什么,例如短语中的 vBulletin?

前任;

{username} you have two notifications

我已经检查了 smarty/raintpl,并研究了所有这些的一些正则表达式,smarty/raintpl 正是我需要的,唯一的问题是,它们都是从文件中读取的,我是从数据库中提取的,我需要一些东西,例如;

$username = "Bob";
$html = "{username} you have two notifications";
display($html);

如果我使用任何替换函数(regex/str_replace),这会减慢脚本/网站的速度吗?

4

1 回答 1

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,但根据您的项目,您可能会发现这种做法太过分了。

于 2012-10-03T07:57:07.717 回答