проверка нецензурных слов

Автор Flywood, 22 сентября 2006, 10:13:14

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Flywood

заметил что при проверке нецензурных слов опция "Только слова целиком" перестала работать. Подскажите где искаь причину и как исправить...

Flywood

нашёл.

в файле Load.php

1630 $censor_vulgar[$i] = (empty($modSettings['censorWholeWord']) ?
'/' . $censor_vulgar[$i] . '/' : '/(?<=^|\W)' . $censor_vulgar[$i] . '(?=$|\W)/') .
(empty($modSettings['censorIgnoreCase']) ? '' : 'i') . ((empty($modSettings['global_character_set']) ?
$txt['lang_character_set'] : $modSettings['global_character_set']) === 'UTF-8' ? 'u' : '');


заменил на

1630 $censor_vulgar[$i] = (empty($modSettings['censorWholeWord']) ?
'/' . $censor_vulgar[$i] . '/' : '/(^|\s)' . $censor_vulgar[$i] . '($|\s)/')
. (empty($modSettings['censorIgnoreCase']) ? '' : 'i') . ((empty($modSettings['global_character_set']) ?
$txt['lang_character_set'] : $modSettings['global_character_set']) === 'UTF-8' ? 'u' : '');

Flywood

люди подскажите как сделать чтобы при проверке не учитывался регистр слова?

Denis

может быть в регулярных выражениях использовать идетификатор "i"?
регулярка: "/....что-то типа(^|\s)...../i"

Flywood

не помагает.
Изначально этот параметр ставился в зависимости от настроек. потом я его прописал жостко
и теперь строка создания рег выражения выглядит так:
$censor_vulgar[$i] = (empty($modSettings['censorWholeWord']) ? '/' . $censor_vulgar[$i] . '/i' : '/(^|\s|
[\?\!\.\,])'.$censor_vulgar[$i].'($|\s|[\?\!\.\,])/i').((empty($modSettings['global_character_set']) ?
$txt['lang_character_set'] : $modSettings['global_character_set']) === 'UTF-8' ? 'u' : '');


но что с "i" что без неё работает одинаково.