2013-03-02 3 views
1

나는 wordfilter 테이블을 MySQL에 가지고 있으며 PHP를 사용하여 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"합니다 ("E"는 <b>test</b>에서 "F"로 대체하지 않습니다이 결과를 갖고 싶어 in 입력 문자열).

답변

2

당신의 배열 구축과 같이 쌍을 검색-대체 :

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

그런 다음 strtr의 마법을 사용;

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

감사합니다. 내 목숨을 구했습니다. – djmati11

관련 문제