Найти, где и какое слово соответствует sql LIKE заявление - PullRequest
1 голос
/ 09 сентября 2010

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

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

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

ТИА

Ответы [ 2 ]

2 голосов
/ 09 сентября 2010

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

$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, здесь нет необходимости в регулярных выражениях.

1 голос
/ 09 сентября 2010

Вы можете попробовать следующие функции в php

similar_text()
levenshtein()
soundex()

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

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

...