Перейти к контенту
  • 0

HowTo up IPB v2.3.4 with UTF-8 DB


Вопрос

Предупреждение: НЕ терпеливым не стоит даже пытаться!

 

И так, перечитав большую часть постов на данном форуме, а так же на западном, поковырявшись в google я нашла способ на ipbskins.ru

Описанный ниже способ является описанием точных действий для выше указанной версии.

 

Исходное руководство которым я пользовалась доступно тут.

Огромное спасибо Kuja и Dr.Freddy.

 

Действия:

0. настраиваем mysql

В файле: my.cnf указываем:

[client]
default-character-set = utf8

[mysqld]
init-connect		  = "SET NAMES utf8"
init-connect		  = "SET CHARACTER SET utf8"
character_set_client  = utf8
character_set_server  = utf8
collation_server	  = utf8_general_ci
default-collation	 = utf8_general_ci
skip-character-set-client-handshake
default-character-set = utf8

[mysql]
default-character-set = utf8

1. Переводим все файлы папки upload в кодировку UTF-8

Вопрос КАК? Уверена, что производить руками все данные манипуляции крайне не хочется. Для этих целей я использовала python скрипт найденный мною тут. В той же теме есть описание использование iconv с ком. интерпретатором bash для win32 - вариант в исходном виде не рабочий, но при небольшом видо изменении может быть использован. Еще раз повторю, что я использовала python скрипт, который конвертирует файлы только в указанной директории. Это конечно несколько не удобно (приходится неоднократно заниматься копированием), с другой стороны ознакомиться с файловой структурой не помешает. Скорее всего, когда решу текущую задачу доведу его до ума.

2. изменяем следующие файлы:

...\ips_kernel\class_db_mysql_client.php

...\ips_kernel\class_db_mysqli_client.php

 

возникает вопрос: а в чем разница данных файлов? опытном путем выяснила, что на localhost'е используется второй. Выбор файлов производится в зависимости от условия:

if ( extension_loaded('mysqli') AND ! defined( 'FORCE_MYSQL_ONLY' ) )

но его смысл мне не понятен.

 

в class_db_mysql_client.php 162 строка

вместо:

$res = mysql_query( "SHOW CHARSET LIKE '" . $this->obj['mysql_codepage']  .  "'", $this->connection_id );

ставим:

$res = mysql_query( "SHOW CHARSET LIKE 'utf8'", $this->connection_id );

ниже, вместо:

mysql_query( "SET NAMES " . $this->obj['mysql_codepage'], $this->connection_id );
mysql_query( "SET CHARACTER SET " . $this->obj['mysql_codepage'], $this->connection_id );
mysql_query( "SET character_set_connection = " . $this->obj['mysql_codepage'], $this->connection_id );
mysql_query( "SET collation_connection = " . $charset[2], $this->connection_id );

ставим:

mysql_query( "SET NAMES utf8", $this->connection_id );
mysql_query( "SET CHARACTER SET utf8", $this->connection_id );
mysql_query( "SET character_set_connection = utf8", $this->connection_id );
mysql_query( "SET collation_connection = utf8_general_ci", $this->connection_id );

в class_db_mysqli_client.php 169 строка

вместо:

$res = mysqli_query( $this->connection_id, "SHOW CHARSET LIKE '" . $this->obj['mysql_codepage']  .  "'");

ставим:

$res = mysqli_query( $this->connection_id, "SHOW CHARSET LIKE 'utf8'" );

ниже, вместо:

mysqli_query( $this->connection_id, "SET NAMES " . $this->obj['mysql_codepage'] );
mysqli_query( $this->connection_id, "SET CHARACTER SET " . $this->obj['mysql_codepage'] );
mysqli_query( $this->connection_id, "SET character_set_connection = " . $this->obj['mysql_codepage'] );
mysqli_query( $this->connection_id, "SET collation_connection = " . $charset[2] );

ставим:

mysqli_query( $this->connection_id, "SET NAMES utf8" );
mysqli_query( $this->connection_id, "SET CHARACTER SET utf8" );
mysqli_query( $this->connection_id, "SET character_set_connection = utf8" );
mysqli_query( $this->connection_id, "SET collation_connection = utf8_general_ci" );

на этом изменение файлов завершено.

 

Что меня смущает

print_r($this->obj['mysql_codepage']);

показывает, что это значение задается при установке на 4ом шаге (База данных) - Кодировка MySQL. Но, если оставить данные файлы без изменений, после установки отображается Классический стиль IPB (синий) без рисунков, а не IP.Board Pro.

 

Заглянув в исходное руководство (см ссылку выше) мы видим:

По идее это достаточно сделать только в \ips_kernel\ class_db_mysql.php (очевидно речь идет о более старой версии)

Но для перестраховки я прописал данные указания в нескольких файлах, где идет соединение с БД ($this->DB->connect())

\sources\ipsclass.php

ipchat.php (если кто использует)

и т.д.

Собственно хотелось бы узнать, достаточно ли выше описанных изменений?

 

3. в корневой каталог, где располагаются файлы форума, добавляем файл .htaccess, содержащий:

AddDefaultCharset UTF-8

а так же любые другие директивы, которые вам требуются.

4. начинаем установку. На 4ом шаге вместо cp1251, указываем utf8.

5. смотрим на установленный форум. В моем случае все отображалось корректно, за исключением столбца Последнее сообщение, в котором в строке "Добро пожаловать!" вместо "!" был черный ромб с вопросом. Не паникуем. Заходим в панель управления (не обращая внимания на кодировку): Настройки -> Общие настройки -> Кодировка документов. Меняем значение windows-1251 на utf-8. После этого символ в виде черного ромба с вопросом исчез, проблем с кодировкой нет.

 

Хочу уточнить: в данной теме, а так же по данному адресу для версии 2.0.x, 2.1.х советуют вручную изменять значения charset в теге meta. В версии 2.3.4 насколько я понимаю используется подстановка данного значения, которое задается в общих настройках. Правильно понимаю?

 

Радости моей не было предела! Убив на это 3 дня больничного результат был, достигнут. Рано я радовалась. Дальше описание моей проблемы.

 

Собственно следующей моей задачей является конвертация базы MySQL из cp1251 в utf8. Вот ЭТО я пока не смогла сделать. История следующая: срочно потребовался форум, знакомый посоветовал использовать ipb сразу направив на ibresource.ru. Вопрос не в деньгах, просто перед тем как приобретать что то, хотелось познакомиться с продуктом полностью. Продукт понравился (за исключением вопроса с кодировкой), накопилась некоторая бд (не особо большая, и в принципе убив 2-3 дня ее можно перетащить в ручную, перекопировав все посты, но это очень не хочется делать!!!). Сейчас форума в сети нету. Решив данную задачу, сразу куплю лицензию и подниму форум. Так что большая просьба не ругаться за использование null версии.

 

И так что я делаю:

Имею дамп снятый с бд в кодировке cp1251.

1. Конвертирую файл в utf8.

2. Добавляю в начало следующие строки

SET NAMES utf8;
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `db_name`;

3. по всему файлу произвожу замену

DEFAULT CHARSET=cp1251

на

DEFAULT CHARSET=utf8

4. В phpMyAdmin удаляю все таблицы в бд db_name

5. Восстанавливаю бд из конвертированного дампа:

mysql -u u_name -p db_name < C:\1.sql

пробывала и так:

mysql -u u_name -p --default-character-set=utf8 db_name < C:\1.sql

 

... и в итоге... Вижу:post-76375-1215446686_thumb.jpg

в течении уже 2х дней вижу, сил нету... Что только не пробовала... Хочется взять монитор и стукнуть его головой :D

В БД все сравнения utf8_general_ci. Данные нормальные. Используя данный дамп без проблем восстанавливаю базу в кодировке cp1251. Помогите пожалуйста! У меня 2 предположения, либо я не делаю, какую-то мелочь, либо совершенно не правильно делаю все, в этом случае опишите пожалуйста алгоритм. Заранее спасибо за помощь!

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

У, как всё запущено.

вместо:

Код

$res = mysqli_query( $this->connection_id, "SHOW CHARSET LIKE '" . $this->obj['mysql_codepage'] . "'");

 

ставим:

Код

$res = mysqli_query( $this->connection_id, "SHOW CHARSET LIKE 'utf8'" );

 

ниже, вместо:

Код

mysqli_query( $this->connection_id, "SET NAMES " . $this->obj['mysql_codepage'] );

mysqli_query( $this->connection_id, "SET CHARACTER SET " . $this->obj['mysql_codepage'] );

mysqli_query( $this->connection_id, "SET character_set_connection = " . $this->obj['mysql_codepage'] );

mysqli_query( $this->connection_id, "SET collation_connection = " . $charset[2] );

 

ставим:

Код

mysqli_query( $this->connection_id, "SET NAMES utf8" );

mysqli_query( $this->connection_id, "SET CHARACTER SET utf8" );

mysqli_query( $this->connection_id, "SET character_set_connection = utf8" );

mysqli_query( $this->connection_id, "SET collation_connection = utf8_general_ci" );

Зачем это делать, если изменили my.cnf? :D И в люьов случае не нужно делать первый запрос, а вместо последних досточно одного SET NAMES utf8.

 

1. Ничего не отображается из-за отсутствия кеша. Нужно в админцентре перестроит.

2. Думаю что перед тем, как заливать бекап обратно, его тоже нужно было сконвертировать в utf, разве нет?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Зачем это делать, если изменили my.cnf? :D И в люьов случае не нужно делать первый запрос, а вместо последних досточно одного SET NAMES utf8.

 

не работает без этого ;)

Исходя из логики я согласна что лишнее это, но факт что не работает. Либо у меня руки кривые, либо спишем на null версию.

 

1. Ничего не отображается из-за отсутствия кеша. Нужно в админцентре перестроит.

2. Думаю что перед тем, как заливать бекап обратно, его тоже нужно было сконвертировать в utf, разве нет?

 

Я вот тоже на кешь уповала! Но... как его обновить? Можно чуть по подробнее? Или ссылку на тему, если обсуждалось. Проблема еще в том что я в админ панель после этого войти не могу :)

 

Дамп конвертирую. Это описано в первом пункте.

1. Конвертирую файл в utf8.

Или вы не это имеете в виду?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Сервер нужно перегрузить по идее.

 

Настройки - Управление кешем. Это есть в документации(ссылка сверху), которую лучше прочитать и изучить админку форума, прежде чем устраивать такое :D

 

Пропустил этот пункт, согласен.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

С документацией ознакомилась, и весь ресурс излазила уже давно =)

Вопрос был поставлен несколько не корректно, не как это сделать в принципе, а каким образом это сделать без доступа в админ панель? Сейчас попробую перезагрузить сервер (пока все это делаю на localhost'е используя Denwer)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А доступа почему нету? Если пароль перестал подходить, то можно через нового зарегить пользователя и поменять ему группу в БД.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

и так добилась определенных результатов. Sannis, спасибо за помощь! Подробно:

Пользователя создать не могла. На странице регистрации не было поля для ввода логина. Но в АП все-таки попала, в полном отчаянье набрала в поле логин e-mail адрес (что в принципе и было написано в форме) и указала пароль.

После входа совершила следующие действия:

1. настройки -> Общие настройки -> Кодировка документов. Меняем значение windows-1251 на utf-8

2. настройки -> Управление кешем -> Обновить все кеши

3. внешний вид -> инструменты -> Обновление кеш-файлов -> Обновить кеш-файлы у всех стилей

 

смотрим на форум, радуемся солнцу, свету, возможности поспать спокойно! итд =) еще раз спасибо Sannis))

 

Теперь следующие проблемы:

выяснилось случайно: надо было поменять имя пользователя, захожу в раздел управления пользователей, указываю новый логин, меняю. Появляется белая страница со следующим содержанием:

Ошибка при работе с базой данных
Возникла проблема при работе с базой данных.
Вы можете попробовать обновить эту страницу, нажав сюда

Если требуется, могу выложить что выводится при режиме отладки, если там что то выводится. Причем это случается только в том случае, если имя пользователя задано русскими буквами, с именем в английской раскладке проблем нету. Смотрю в базу, изменений не было. Пытаюсь изменить псевдоним (тоже на русской раскладке), появляется страница с переадресацией, потом такая же страница с ошибкой бд. Смотрю в бд, поле members_display_name изменилось, в нем символы "?". Понятно что это происходит из-за того что данные в базу отправляются не в той кодировке, но вот как это исправить? У меня пока нет идей. Сейчас буду читать темы с описание ошибок бд. Проблем с созданием сообщений на форуме нет, в базу заносится все корректно! Заранее спасибо за любую помощь.

 

P.S действия описанные мной во втром пункте установки (изменение файлов) похоже на самом деле не нужны, исправила обратно все работает.

 

Добалвено:

Код ошибки: 1045

Сообщение сервера: Access denied for user 'ODBC'@'localhost' (using password: NO)

 

Где то на форуме видела/читала (а может быть память изменяет), что данная проблема возникает только в null версиях?

 

Добалвено:

... хотя нет, попробовала произвети такие же действия на "базовом" (имеюю в виду кодировку cp1251, точно не знаю как это называется) форуме, там все работает - делаю вывод проблема из за использования utf-8 :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
./cache/*.cgi смотрели на предмет этой ошибки, да?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

да... извиняюсь, я ночью не в тот файл посмотрела :D

там несколько сообщений об ошибках (могу тут выложить полный текст), но типов ошибок 2

первая:

Код ошибки: 1267

Сообщение сервера: Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

вторая:

Код ошибки: 1267

Сообщение сервера: Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Значит не везде изменили кодировку, смотрите эту таблицу(название которой там приведено в запросе), поля в ней.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да, вы совершенно правы (пропала бы без вас), по какой-то причине (скорее всего несколько пробелов) в дампе не было авто изменено значение DEFAULT CHARSET на utf8 у данной таблицы. Исправила.

 

Пытаюсь повторить такие же действия. В бд заносятся нормальные значения (на русской раскладке) имя изменяется но, при этом поля members_l_display_name и members_l_username (речь о таблице ipbF_members) у данного пользователя пустые. Проверяла: до данной операции по изменению имени значения были.

 

А так же, в процессе изменения имени появляется страница с переадресацией, которая продолжается достаточно долгое время и в итоге показывает белую страницу (сейчас пойду смотреть на рекомендации по данной злосчастной теме), файлов с описанием ошибок нет.

 

Добавлено:

значит фатальная ошибка php... ок буду разбираться дальше :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В ./sources/action_admin/member.php найдите:

		$this->ipsclass->DB->do_update( 'members'	   , array( 'members_display_name' => $display_name, 'members_l_display_name' => strtolower($display_name) ), "id="			.$member['id'] );

и замените strtolower на mb_strtolower. Хорошо бы пройтись по всем файлам и заменить это везде, где не предусмотрено это изменять с помощью настройки.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

скоро со злости книжку напишу)) в денвере оказывается нет по умолчанию mbstring *wall*

 

ок, нагуглила установила... На mb_strtolower ругаться перестал (пока произвела замену по всему файлу member.php), но от белого экрана я так и не избавилась и в тех полях данные не появляются. При включенном выводе ошибок (display_errors = On и display_startup_errors = On, второе на всякий случай) все равно белая страница, ошибки не показывает. Соответственно, если Вас не затруднит можно капельку по подробнее про файлы, в которых стоит произвести замену и о настройке, которая позволяет это изменять (не смотря на прочтение документации, такого я не помню, а мб не понимаю о чем идет речь). Возможно, у вас появятся другие идеи по данной проблеме, буду крайне признательна.

 

p.s. чтобы у вас не появилось ощущение, что я злоупотребляю вашим доверием, завтра с утра пойду за webmoney и произведу покупку лицензии.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Попробуйте

error_reporting  =  E_ALL

 

Про настройку я сказан неправду, она только одну функцию регулирует. Так что лучше сделать замену всех используемых форумом функций для строк на соответствующие mb_ аналоги.

 

Если будет дальше белая страница - можно помотреть логи PHP, путь к ним в php.ini должен быть.

 

p.s. чтобы у вас не появилось ощущение, что я злоупотребляю вашим доверием, завтра с утра пойду за webmoney и произведу покупку лицензии.
Меня этот вопрос не касается, я не имею отношение к реселерам :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

попробовала, там по умолчанию было

error_reporting  =  E_ALL & ~E_NOTICE

по прежнему белая страница

 

далее заменила значение log_errors с Off на On

возникает вопрос относительно следующего параметра, по умолчанию он имеет следующий вид:

;error_log = filename

я тут должна указать имя лог файла, допустим php_error.log

имя должно быть относительным? и если да в каком месте данный файл будет создан?

 

Добавлено:

а замену функций лучше производить в дистрибутиве до установки или в уже установленном форуме? Думаю что роли не играет, хотя мало ли...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Собственно произвела доработку скрипта для конвертации файлов. Тестировала (не на IPB) вроде бы должно работать... Мб кто-то заинтересуется...

 

код скрипта (convert.py):

#!/usr/bin/env python
import os
import sys
import codecs
import re

parameter = {}
parameter['ignore'] = []
parameter['pass'] = []

key = ''

print u'Получение параметров'
try:
for line in codecs.open('./convert.ini', 'r', 'utf-8'):
	if len(line) >= 2 and line[-2:] == '\r\n':
		line = line[:-2]
	line = line.encode('cp1251')
	if line == '[IN]':
		key = 'in'
		continue
	elif line == '[FROM]':
		key = 'from'
		continue
	elif line == '[TO]':
		key = 'to'
		continue
	elif line == '[IGNORE]':
		key = 'ignore'
		continue
	elif line == '[PASS]':
		key = 'pass'
		continue
	elif key == '': # пропускаем комментарий
		continue

	if line != '':
		if key in ['ignore', 'pass']:
			parameter[key] += [line]
			continue
		else:
			parameter[key] = line
			key = ''
except:
print u'В процессе получения параметров возникли ошибки!'
exit();

print u'Получение списка каталогов'
def getDirectoryList(pDirectoryList, pDirectoryIndex):
for directory in filter( lambda x: os.path.isdir(pDirectoryList[pDirectoryIndex] + x), os.listdir(pDirectoryList[pDirectoryIndex])):
	pDirectoryList += [pDirectoryList[pDirectoryIndex] + directory + '/']
pDirectoryIndex += 1
if pDirectoryIndex != len(pDirectoryList):
	getDirectoryList(pDirectoryList, pDirectoryIndex)
return pDirectoryList

ignore = 0

for dN in getDirectoryList([parameter['in']], 0):
for i in parameter['ignore']:
	if dN == i:
		parameter['ignore'].remove(i)
		ignore = 1
		break
if ignore == 1:
	ignore = 0
	continue
print '\n' + dN
for f in filter( lambda x: os.path.isfile(dN + x), os.listdir(dN)):
	for p in parameter['pass']:
		if len(f) >= len(p) and f[-len(p):] == p:
			ignore = 1
			break
	if ignore == 1:
		ignore = 0
		continue
	In = codecs.open(dN + f, 'r', str(parameter['from']))
	text = In.read()
	In.close()
	try:
		os.remove(dN + f)
	except:
		print f + ' '*(25 - len(f)) + u'не может быть удален!'
		continue
	Out = codecs.open( dN + f, 'w', parameter['to'])
	Out.write(text)
	print f + ' '*(25 - len(f)) + u'успешно перезаписан'

 

руководство по использованию:

1. потребуется скачать дистрибутив (win32) и установить python

2. для работы скрипту необходим файл convert.ini расположенный с файлом скрипта в 1 каталоге. Файл требуется отредактировать, указав ваши параметры для запуска скрипта. Кодировка файла UTF-8. Пример:

Комментарии
[IN]
d:/_IN/
[FROM]
cp1251
[TO]
utf-8
[IGNORE]
d:/_IN/_OUT/
d:/_IN/2/
[PASS]
.me
.andme

Сверху могут быть ваши комментарии, количество строк не ограничено

[iN] - на следующей строке требуется указать полный путь до каталога, в котором лежат файлы для конвертации.

[FROM] - исходная кодировка файлов

[TO] - кодировка, в которую требуется перевести файлы

[iGNORE] - после данного маркера, требуется указать полные пути директорий, которые должны быть проигнорированы. Количество строк не ограничено. (например, я не конвертирую папку содержащую файлы charset'ов)

[PASS] - типы файлов, которые требуется игнорировать. Количество строк не ограничено. (например .png и/или .jpg)

 

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

 

p.s. никто не подскажит как автоматически произвести замену (в группе файлов) нескольких слов на другие? или опять придется скрипт писать?

Изменено пользователем Serenity
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Предыдущая проблема:

а ларчик то просто открывался! =) очень просто... GOOGLE - опора и поддержка искателей информации!

и так, нашла вот такую статью про mbstring

почитав... подумав, еще почитав... смотрю в php.ini и вижу, что все настройки касательно mbstring

закомментированы (на денвере)... вставляю, вот такой код:

;; Установить внутреннюю кодировку по умолчанию
;; Примечание: Используйте кодировку символов, которая работает с PHP
mbstring.internal_encoding	= UTF-8; Установить внутреннюю кодировку UTF-8

;; Установить кодировку символов по умолчанию для HTTP-ввода
;; Примечание: Скрипт не может изменить установку http_input
mbstring.http_input		   = pass  ; Нет конвертации 
mbstring.http_input		   = UTF-8

;; Установить кодировку символов по умолчанию для HTTP-вывода
mbstring.http_output		  = pass  ; Нет конвертации
mbstring.http_output		  = UTF-8 ; Установить кодировку HTTP-вывода в UTF-8

;; Установить порядок определения кодировки символов по умолчанию
mbstring.detect_order		 = auto  ; Установить порядок определения в auto
mbstring.detect_order		 = ASCII,JIS,UTF-8,SJIS,EUC-JP; Специфицировать порядок

;; Установить замещающий символ по умолчанию
mbstring.substitute_character = 12307 ; Специфицировать значение Unicode
mbstring.substitute_character = none  ; Не печатать символ
mbstring.substitute_character = long  ; Long-Пример: U+3000,JIS+7E7E

 

после чего, все прекрасно работает (я про переадресацию)... никаких белых экранов... в бд в тех полях значения в нижнем регистре =) супер...

 

Только у меня следующие просьбы к знающим людям:

1. посмотрите пожалуйста настройки данного модуля (я веб программированием занимаюсь пол года (меньше наверное), могла что то сделать не правильно) или не доделать

2.

а замену функций лучше производить в дистрибутиве до установки или в уже установленном форуме? Думаю что роли не играет, хотя мало ли...

3.

Так что лучше сделать замену всех используемых форумом функций для строк на соответствующие mb_ аналоги.
И вот это можно по подробнее. Хотелось бы конечно список функций для замены... но ладно, наглеть не стоит. В статье которую я указала выше, есть список функций (в самом низу) модуля mbstring. Только у меня нету уверенности, что список там полный :D Искать в коде их аналоги без mb_ и заменять? Изменено пользователем Serenity
Ссылка на комментарий
Поделиться на других сайтах

  • 0
И вот это можно по подробнее. Хотелось бы конечно список функций для замены... но ладно, наглеть не стоит. В статье которую я указала выше, есть список функций (в самом низу) модуля mbstring. Только у меня нету уверенности, что список там полный sad.gif Искать в коде их аналоги без mb_ и заменять?

Да. Разве что там есть функция, которая не так пишется, с лишним подчёркиванием, и одной функции в mb_ нет, но она вроде в IPB не используется.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.