2013-03-02 5 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" («е» не заменяет с «е» в <b>test</b>, потому что он не присутствовал в строке ввода).

ответ

2

Построить массив вашего поиска замены пар, как так:

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

Затем использовать магию strtr;

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

Благодарю вас, вы спасли мне жизнь. – djmati11