2010-09-09 2 views
1

Я использую очень длинный подобный запрос для обнаружения оскорбительных слов в моих пользовательских именах пользователей.Найти, где и какое слово соответствует sql LIKE statement

Я сделал страницу модератора, где модератор может нажать кнопку рядом с обнаруженным именем пользователя, и она заменит оскорбительное слово на *. Проблема в том, как я могу легко определить, какое оскорбительное слово и где заменить?

Я думаю, мне нужно будет использовать регулярное выражение некоторого описания, которое будет функционировать точно так же, как и оператор LIKE. Помощь в создании такого регулярного выражения будет значительно ассигнуна или ... если у кого-то будет лучшее решение.

ТИА

ответ

2

Что-то вроде:

$bad_list = array('foo','barr','ax'); // list of bad words you want to * 

$from = array(); 
$to = array(); 

foreach($bad_list as $s){ 
    $from[] = '/'.preg_quote($s,'/').'/'; // PHP expects regex in delimiter. 
    $to[] = str_repeat('*',strlen($s)); 
} 
$str = "afoob"; 
$str = preg_replace($from,$to,$str); // $str is now a***b 

Вы можете также использовать str_replace, там действительно нет необходимости в регулярном выражении здесь.

+0

Clbuttic пример. – Wrikken

1

Вы можете попробовать ниже функций в PHP

similar_text() 
levenshtein() 
soundex() 

Вы можете просто создать простой скрипт для соответствия слов, а затем заменить эти слова в соответствии с вашими потребностями.

Проверка документации http://in2.php.net/manual/en/function.similar-text.php

Смежные вопросы