VDT2
@VDT2
Java Junior

Как проверить вхождение слов из базы данных в строке запроса (фильтр мата)?

Приветствую.
Не могу сообразить как сделать простую вещь.... найти вхождение матерных слов (словарь в виде таблицы ID|Word)
Например. Пришло предложение "Моя первая саБЛЯ". Слово "БЛЯ" найдено в таблице. Выдать результат.

По конкретному слову, сейчас ищу так
SELECT EXISTS(SELECT * FROM `badwords` WHERE `Bwords` = ?)


А вот как выцепить фразу из предложения - не соображу.
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
VDT2
@VDT2 Автор вопроса
Java Junior
Пока решил вот так:
SELECT
	locate( `badwords`.`Bwords`, 'са234234 Саббля разная' ) 
FROM
	`badwords`


Ну и чтобы решение было законченным, обработчик запроса на NodeJS
async function verifyBedWord(word, user) {
    const sql = 'SELECT locate ( `Bwords`, ? )FROM `badwords`';
    const [rows, fields] = await promisePool.query(sql, [word]);

    for (var key of rows) {
        for (var key2 in key) {
            if (key[key2] > 0) {
                return true;
            }
        }
    }
    return false;
}

Где "promisePool" - это пул подключений mysql2

За красоту и изящность вариации утверждать не стану.
Схема работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы