在vBulletin等字符串中解析变量

时间:2012-10-03 07:50:14

标签: php parsing vbulletin phrase

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

离;

{username} you have two notifications

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

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

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

1 个答案:

答案 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,但根据您的项目,您可能会发现这种过度杀伤。