Механізм навантаження функцій
Увага
Ця функціональність оголошена застарілої починаючи з 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 | исходная функция | перегруженная функция |
---|---|---|
mail() | mb_send_mail() | |
strlen() | mb_strlen() | |
strpos() | mb_strpos() | |
strrpos() | mb_strrpos() | |
substr() | mb_substr() | |
strtolower() | mb_strtolower() | |
strtoupper() | mb_strtoupper() | |
stripos() | mb_stripos() | |
strripos() | mb_strripos() | |
strstr() | mb_strstr() | |
stristr() | mb_stristr() | |
strrchr() | mb_strrchr() | |
substr_count() | mb_substr_count() |
Зауваження :
Не рекомендується використовувати навантаження функцій у контексті кожної директорії, оскільки домогтися стабільної роботи в цьому випадку поки не вдалося, і це може призвести до несподіваної поведінки програми.