Источник: http://www.pcre.org/pcre.txtLOCALE SUPPORT
PCRE handles caseless matching, and determines whether characters are
letters, digits, or whatever, by reference to a set of tables, indexed
by character value. When running in UTF-8 mode, this applies only to
characters with codes less than 128. Higher-valued codes never match
escapes such as \w or \d, but can be tested with \p if PCRE is built
with Unicode character property support. The use of locales with Uni-
code is discouraged. If you are handling characters with codes greater
than 128, you should either use UTF-8 and Unicode, or use locales, but
not try to mix the two.
Автоцензор, исправление автоцензора
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Покурил маны:
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Возможно у меня не работало потому-что использовался модификатор u.
Добавлено спустя 1 минуту 29 секунд:
По этому поводу пишут:
Добавлено спустя 1 минуту 29 секунд:
По этому поводу пишут:
If only one letter is specified with \p or \P, it includes all the properties that start with that letter. In this case, in the absence of negation, the curly brackets in the escape sequence are optional; these two examples have the same effect:
\p{L}
\pL
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
В режиме UTF-8(модификатор u) PCRE не смотрит на локаль при определении \w, поэтому нужно использовать \p последовательности.
Поэтому у Вас наверно и заработало при смене локали. Я же добавлял модификатор u, и менял локаль.
Вообщем нужно использовать только один из вариантов.
Подводные камни:
1) не всех хостеров есть UTF-8 локаль.
2) поддержка \p появилась в PHP только с 4.4.0 и 5.1.0
поэтому на крайний случай есть вариант с \S
Поэтому у Вас наверно и заработало при смене локали. Я же добавлял модификатор u, и менял локаль.
Вообщем нужно использовать только один из вариантов.
Подводные камни:
1) не всех хостеров есть UTF-8 локаль.
2) поддержка \p появилась в PHP только с 4.4.0 и 5.1.0
поэтому на крайний случай есть вариант с \S
-
Lokust
- phpBB 1.4.4
- Сообщения: 119
- Стаж: 20 лет 4 месяца
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Так в мануале (кажется от Zend-а) было написано, я не сам придумалrxu писал(а):Минимальным требованием для phpBB3 является PHP начиная с 4.3.3, однако конструкции \p используются в других местах кода, например, в регулярках при фильтрации регистрируемых имен пользователей.
Может разработчики phpBB3 забыли про это дело.
2 Lokust
Все варианты рабочие (2 моих и 1 rxu), просто с ограничениями.
Мы просто уже в дебри полезли.
-
Lokust
- phpBB 1.4.4
- Сообщения: 119
- Стаж: 20 лет 4 месяца
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 4 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
nissin
rxu
вы как-то договитесь и выложите рабочие варианты с кратким описанием ограничений, а то тема на третью страницу скоро полезет.
мусор почистим.
rxu
вы как-то договитесь и выложите рабочие варианты с кратким описанием ограничений, а то тема на третью страницу скоро полезет.
мусор почистим.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
gstas
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Действительно, давно пора сделать резюме, по порядку:
1) Рецепт от rxu. Если у хостера имеется локаль ru_RU.UTF-8 (обычно лежит в /usr/share/locale/)
открыть файл includes/utf/utf_tools.php
Найти:
Заменить на:
2) если установлен PHP начиная с 4.4.0 и 5.1.0
открыть файл includes/cache.php
Найти:
Заменить на:
почистить кэш (либо просто удалить cache/data_word_censors.php).
3) если стоит старый PHP
открыть файл includes/cache.php
Найти:
Заменить на:
почистить кэш (либо просто удалить cache/data_word_censors.php).
1) Рецепт от rxu. Если у хостера имеется локаль ru_RU.UTF-8 (обычно лежит в /usr/share/locale/)
открыть файл includes/utf/utf_tools.php
Найти:
Код: Выделить всё
setlocale(LC_CTYPE, 'C');Код: Выделить всё
setlocale(LC_CTYPE, 'ru_RU.UTF-8');2) если установлен PHP начиная с 4.4.0 и 5.1.0
открыть файл includes/cache.php
Найти:
Код: Выделить всё
$censors['match'][] = '#(?<!\w)(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')(?!\w)#i';Код: Выделить всё
$censors['match'][] = '#(?<!\pL)(' . str_replace('\*', '\pL*?', preg_quote($row['word'], '#')) . ')(?!\pL)#iu'; 3) если стоит старый PHP
открыть файл includes/cache.php
Найти:
Код: Выделить всё
$censors['match'][] = '#(?<!\w)(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')(?!\w)#i';Код: Выделить всё
$censors['match'][] = '#(?<!\S)(' . str_replace('\*', '\S*?', preg_quote($row['word'], '#')) . ')(?!\S)#iu';-
eric
- phpBB 1.4.4
- Сообщения: 156
- Стаж: 19 лет 7 месяцев
- Откуда: Москва


