2013-03-02 32 views
1

我有wordfilter表在MySQL中,我使用PHP从它获取所有行并将其替换内部字符串。Wordfilter,不会取代已经过滤的内容

$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"(“电子”不以“f”在<b>test</b>更换,因为它不存在在输入字符串中)。像这样

回答

2

构建您的阵列搜索替换成对:

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

然后使用strtr神奇;

$string = strtr($string,$reps); 
+0

谢谢你,你救了我的命。 – djmati11 2013-03-02 08:05:13