不替换已过滤内容的Wordfilter

时间:2013-03-02 00:09:33

标签: php

我在MySQL中有 wordfilter 表,我使用PHP从中获取所有行并将其替换为字符串。

$string = "test string";
$result = mysqli_query($conn, "SELECT * FROM wordfilter;");
while ($row = mysqli_fetch_assoc($result))
{
    $string = str_replace($row['search'], $row['replace'], $string);
}

它会像这样工作:

Iteration number: (row from table) - result string
0: "tt string e"
1: ("tt", "<b>test</b>") - "<b>test</b> string e"
2: ("e", "f") - "<b>tfst</b> string f"
etc.

我希望它有这个结果"<b>test</b> string f"(“e”不会替换为<b>test</b>中的“f”,因为它在输入字符串中不存在。)

1 个答案:

答案 0 :(得分:2)

构建一组搜索替换对,如下所示:

$reps = array();
while($row = mysqli_fetch_assoc($result)) $reps[$row['search']] = $row['replace'];

然后使用strtr;

的魔力
$string = strtr($string,$reps);