powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) preg_replace в ср1251
12 сообщений из 12, страница 1 из 1
(PHP) preg_replace в ср1251
    #38422182
Фотография pahhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет
ковыряю автоцензор на старом форуме в кодировке ср1251, были проблемы с базой, все решено, остались проблемы с регулярками

суть в том, что preg_replace у меня не работает с ср1251, setlocale не помогло Перевести в другую кодировку огромный форум просто не реально.

Есть идеи?
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38422224
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pahhan,

Какой-нибудь пруф что не работает? Что именно не делает?
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38423115
Фотография pahhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не работает следующая строка

Код: php
1.
$message = preg_replace($orig_word, $replacement_word, $message);



, где $orig_word - массив регулярок для нецензурных выражений, а $replacement_word - массив альтернативных слов, для замещения нецензурщины

Пример того, что содержится в массиве регулярок:
Код: php
1.
#\b(матюк)\b#i



С латиницей работает, а с кириллицей - нет. Кодировка cp1251, setlocale не работает
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38423379
Фотография pahhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все в cp1251 - и база, и страница, и коннект, но при проверке массивов с помощью mb_detect_encoding() пишет, что кодировка utf-8. Что мне с этим делать? о_О
При этом не работает preg_replace, но зато вот так по-чистому все ок

$patterns[0] = "/мама/i";
$patterns[1] = "/мыла/i";
$patterns[2] = "/раму/i";

$replacements[2] = "раму";
$replacements[1] = "красила";
$replacements[0] = "мама";

$s = preg_replace($patterns,$replacements, "мама мыла раму");
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38423394
Фотография pahhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял, вопрос в регулярке самой!
подскажите, пожалуйста, что не так!

$patterns[0] = '#\b(' . str_replace('\*', '\w*?', preg_quote("мама", '#')) . ')\b#i';
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38423668
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pahhan,

Не знаю, что там где не работает, повторить не удалось. Вот так вот все пашет на ура:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$s = "мама мыла раму";
$patterns[0] = "/мама/i";
$patterns[1] = "/мыла/i";
$patterns[2] = "/раму/i";

$replacements[2] = "водку";
$replacements[1] = "клала";
$replacements[0] = "бабушка";

ksort($patterns);
ksort($replacements);
$res = preg_replace($patterns, $replacements, $s);

var_dump($res);

// string(19) "бабушка клала водку"



Скрипт в cp1251 + в .htaccess изменил кодировку - AddDefaultCharset windows-1251
Никаких сетлокалей тут нафиг не нужно.
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38423793
Фотография pahhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, но я ж и пишу, пример с мамой работает, а вот с такой регуляркой - нет :)

#\b(матюк)\b#i

типа так

$message = preg_replace("#\b(матюк)\b#i", "цензура", "и тут я не выдержал и сказал матюк");

В htaccess стоит кодировка
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38423804
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pahhan,

че за "\b"? зачем оно в регулярке?
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38424841
Фотография pahhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю сам, у меня с регулярками беда, так было в коде автоцензора :)
В нете не нашел ничего путного о том, что же делают эти б и можно ли их убрать, поэтому и прощу помощи
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38425054
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pahhan,

Мог бы отправить дальше искать, ну да ладно... Хотя, конечно, вы блин молодежь поисковиками пользоваться не умеете

Вот так пробуй:
Код: sql
1.
$pattern = "/[\d\s]+матюк[\d\s]+/i";



Там прикол в том, что "\b" - это типа граница слова должна быть, но для русских символов эта херотень не пашет
Поэтому нужно уметь крутиться :)
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38425056
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторно для русских символов эта херотень не пашет
русский пробел - это что то новое.
...
Рейтинг: 0 / 0
(PHP) preg_replace в ср1251
    #38425061
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow,

Ну ты возьми попробуй (или хотя бы сделай попытку понять суть вопроса), а потом рассказывай про пробелы. Че пыль-то подымать когда сказать нечего?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) preg_replace в ср1251
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]