0

我需要做的是解析一个类似于这样的字符串:

{a}3{/a}*{b}4{/b}

或这个

{a}3{/a}/{b}2{/b}*100

我需要在该字符串中用数据库中的实际值替换标签中的那些值,第一个示例:

SELECT value FROM table WHERE id = 3;

SELECT value FROM table WHERE id = 4;

这个功能:

preg_replace_callback('/(?>{([^}]+)})(.*)?{\/\1}/sim', 'find_tags_callback', $string);

实际上返回字符串中包含的 id,问题是我被困在那里。在伪代码中,我需要:

从字符串中提取第一个 id。

运行我的查询。

用正确的值替换该 id。

[对所有标签执行相同的操作]

用正确的值返回初始字符串。第一个可能是

10*3

第二

40/90*100

任何想法如何做到这一点,我完全被卡住了。

谢谢

4

1 回答 1

1

执行数据库查询以获取所有值,并将它们放入以 ID 为键的数组中。在下面的代码中,我假设数组名为$tags.

$new_string = preg_replace_callback('/\{([^}]+)\}(.+?)\{/\1\}/sim', 
    function ($match) use ($tags) {
        return $tags[$match[2]];
    }, $string);

use ($tags)声明允许函数引用外部变量$tags

于 2013-08-01T09:12:59.250 回答