array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'mbstring.overload.php', 1 => 'Механизм перегрузки функций', ), 'up' => array ( 0 => 'book.mbstring.php', 1 => 'Многобайтовые строки', ), 'prev' => array ( 0 => 'mbstring.supported-encodings.php', 1 => 'Поддерживаемые кодировки символов', ), 'next' => array ( 0 => 'mbstring.php4.req.php', 1 => 'Требования, предъявляемые к кодировкам символов в PHP', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/mbstring/overloading.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
Эта функциональность объявлена УСТАРЕВШЕЙ начиная с PHP 7.2.0 и была УДАЛЕНА в версии PHP 8.0.0. Использовать эту функцию крайне не рекомендуется.
Зачастую заставить работать существующее PHP-приложение в многобайтовом окружении оказывается довольно трудной задачей. Это происходит, потому что большинство PHP-приложений написано с использованием стандартных функций обработки строк, таких как substr(), которые не умеют работать со строками в многобайтовых кодировках.
mbstring поддерживает механизм 'перегрузки функций', который позволяет сообщить приложению о том, что используется многобайтовая кодировка, без модификации кода, отвечающего за работу со строками. Например, если включена перегрузка функций, то функция mb_substr() будет вызываться вместо substr(). Этот механизм во многих случаях позволяет портировать приложения, поддерживающие только однобайтовые кодировки, в многобайтное окружение.
Для использования механизма перегрузки функций нужно задать настройке
mbstring.func_overload
в php.ini положительное значение,
которое представляет собой комбинацию битовых масок, определяющих категории
функций, которые нужно перегружать. Это будет число 1 для перегрузки функции
mail(). 2 для строковых функций, 4 для функций регулярных
выражений. Например, если значение настройки равно 7, то почтовые, строковые и
функции регулярных выражений будут перегружаться. Список перегружаемых функций
приведён ниже.
значение настройки mbstring.func_overload | исходная функция | перегруженная функция |
---|---|---|
1 | mail() | mb_send_mail() |
2 | strlen() | mb_strlen() |
2 | strpos() | mb_strpos() |
2 | strrpos() | mb_strrpos() |
2 | substr() | mb_substr() |
2 | strtolower() | mb_strtolower() |
2 | strtoupper() | mb_strtoupper() |
2 | stripos() | mb_stripos() |
2 | strripos() | mb_strripos() |
2 | strstr() | mb_strstr() |
2 | stristr() | mb_stristr() |
2 | strrchr() | mb_strrchr() |
2 | substr_count() | mb_substr_count() |
Замечание:
Не рекомендуется использовать перегрузку функций в контексте каждой директории, так как добиться стабильной работы в этом случае пока не удалось, и это может привести к неожидаемому поведению приложения.