1

我有以下字符串

“在任何地方输入 Contarct 字段并用 {} 括起来。您可以使用字段的 id 或字段的字段代码,例如 {25} 或 {FIELD_CONTRACTTEXT}”

我想用数据库中的等效值替换{25}{FIELD_CONTRACTTEXT}。说25是一个ID,所以我想输入ID为字段的名称25

有很多替换花括号的示例,但没有解决方案可以替换这样的内容。请帮助我,我已经尝试了很多东西。

PS:请记住,出现{}是动态的,25不会是静态数字,{}字符串中可以有多个。

4

1 回答 1

1

您可以使用 preg_match_all() 查找出现次数,使用此数组查找数据库中的值,然后使用 str_replace 替换之后的每个值。

首先,您需要获取所有事件:

preg_match_all('/{(.*?)}/', $string, $matches, PREG_PATTERN_ORDER);

匹配数组将如下所示:

Array
(
    [0] => Array
        (
            [0] => {}
            [1] => {25}
            [2] => {FIELD_CONTRACTTEXT}
        )

    [1] => Array
        (
            [0] => 
            [1] => 25
            [2] => FIELD_CONTRACTTEXT
        )

)

然后,您可以循环遍历数组以查找需要替换的各个元素。

您可以使用以下内容检查数据库,然后替换值:

mysql_connect("localhost", "root", "");
mysql_select_db("data");

$string = "Enter Contarct Fields wherever you want and enclose it with {}.You can use field's id or field's fieldcode for example {25} or {FIELD_CONTRACTTEXT}";

preg_match_all('/{(.*?)}/', $string, $matches, PREG_PATTERN_ORDER);

foreach($matches[1] as $match) {
    $sql = mysql_query("SELECT * FROM table WHERE `element`='".addslashes($match)."'");
    if(mysql_num_rows($sql)==1){
        $row = mysql_fetch_assoc($sql);
        str_replace($string, "{".$match."}", $row['value']);
    }
}

echo $string; //echos final output with replaced values
于 2012-04-16T15:06:27.537 回答