Кодировка переменной VBulletin и русские символы

S2
На сайте с 03.11.2010
Offline
105
1054

Уважаемые форумчане, столкнулся с проблемой.

VBulletin Version 3.8.7. Есть переменная

$vbulletin->GPC{ 'message'} 
(квадратные скобки не отобразились на серче вместо их напишу {}) (переменная- текст сообщения) и все от нее производные.

Нужно проверять их на предмет вхождения русских слов с помощью preg_match

	$rus_words=preg_match('/{а-я}/i',$vbulletin->GPC{ 'message'});

Но ни str_pos(mb_str_pos) ни preg_match в упор не видят русские символы в тексте переменной (хотя если выполнить

 echo $vbulletin->GPC{'message'})
она выводится нормально в браузере.

Уже перепробовал все пляски с кодировками, залоговками, директивами \u и прочими- ничего не помогает.

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

Кодировка страниц в браузере вообще iso-8859-1

Где собака зарыта?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

Регулярки работают тока с windows-1251, не ну и с ЮТФ8 нормально, тока с 1байтовыми символами.

Если iso-8859-1 в реале, то так:

$vbulletin->GPC['message'] = iconv(' iso-8859-1', 'windows-1251', $vbulletin->GPC['message']);

$rus_words=preg_match('/[а-я]/i',$vbulletin->GPC['message']);

Кодировку эту не знаю, гуглить лень.

С ЮТФом делаю именно так:

Преобразуем текст в вин-1251, ПРЕГаем, и назад в ЮТФ. Работает в 100% случаев. Как у Вас - хз:)

Подпись))
S2
На сайте с 03.11.2010
Offline
105
#2
Милованов Ю.С:
Регулярки работают тока с windows-1251, не ну и с ЮТФ8 нормально, тока с 1байтовыми символами.
Если iso-8859-1 в реале, то так:
$vbulletin->GPC['message'] = iconv(' iso-8859-1', 'windows-1251', $vbulletin->GPC['message']);
$rus_words=preg_match('/[а-я]/i',$vbulletin->GPC['message']);

Кодировку эту не знаю, гуглить лень.
С ЮТФом делаю именно так:
Преобразуем текст в вин-1251, ПРЕГаем, и назад в ЮТФ. Работает в 100% случаев. Как у Вас - хз:)

Не работает. 😒

Также я преобразовывал текст скриптом супер-гуру программирования, которое из любой кодировки переводит в 1251- и нифига.

Мож там не в кодировке дело, а в каком-то преобразовании?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3

4fun - код скрипта супер-гуру программирования в студию, если не сложно:)

В Скайп или в аську постучите. Дадите доступы(фтп, и прочее) - гляну, ток через часок.

S2
На сайте с 03.11.2010
Offline
105
#4
Милованов Ю.С:
4fun - код скрипта супер-гуру программирования в студию, если не сложно:)
В Скайп или в аську постучите. Дадите доступы(фтп, и прочее) - гляну, ток через часок.

4fun

http://popoff.donetsk.ua/text/work/libs/a/charset/

S2
На сайте с 03.11.2010
Offline
105
#5

Милованов Ю.С, спасибо огромное за то, что определили причину- в переменной содержались HTMl сущности, вместо самих символов.

Обычной html_entity_decode() это оказалось не по зубам, а вот

$text= html_entity_decode($text,ENT_QUOTES,cp1251); решило проблему (мож кому пригодится)

N
На сайте с 06.05.2007
Offline
419
#6
Serjo_201:
в переменной содержались HTMl сущности, вместо самих символов

Это означает, что у вас неправильно настроен вывод кодировки в html-страничке или заголовках. Браузеры вносят html-сущности, если видят, что кодировка совсем нерусская.

Кнопка вызова админа ()
S2
На сайте с 03.11.2010
Offline
105
#7
netwind:
Это означает, что у вас неправильно настроен вывод кодировки в html-страничке или заголовках. Браузеры вносят html-сущности, если видят, что кодировка совсем нерусская.

Ну как у меня, это стандартный двиг VBulletin.

N
На сайте с 06.05.2007
Offline
419
#8

Serjo_201, у вас. у других тот же стандартный двиг работает без этих фокусов.

S2
На сайте с 03.11.2010
Offline
105
#9
netwind:
Serjo_201, у вас. у других тот же стандартный двиг работает без этих фокусов.

Вы тему почитайте, перед тем как что-то писать

Serjo_201:

Нужно проверять их на предмет вхождения русских слов с помощью preg_match

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий