Наша українська мова, як і будь-яка кирилиця, відноситься до багатобайтових з точки зору PHP. Тож ми не можемо для роботи з текстом використовувати звичайні рядкові функції. До прикладу, спробуйте порахувати кількість символів у слові «привіт» функцією strlen:
<?php echo strlen(‘привіт’); ?>
Замість 6 символів програма нарахує нам цілих 12 :) Некоректно будуть працювати й інші рядкові функції (пошук позиції, заміна, регістри тощо). Для роботи з багатобайтовими рядками (Multibyte String) в PHP існує спеціальне розширення php_mbstring. По замовчуванню це розширення вже увімкнено у будь-якого українського хостинг провайдера, тож можна одразу використовувати рядкові функції з префіксом «mb_» без редагування файлу php.ini.
Тепер замість strlen застосуємо функцію mb_strlen:
<?php echo mb_strlen(‘привіт’); ?>
Скрипт вірно виконав підрахунок символів, їх дійсно 6, а не хибно 12, як було раніше!
Далі я наводжу список усіх можливих «mb_» функцій для роботи з мультибайтовими рядками. Зверніть увагу, далеко не для всіх однобайтових рядкових функцій існують аналогічні «mb_» функції.
mb_check_encoding — перевіряє вірність обраного кодуванняmb_chr — повертає символ за значенням кодової точки Unicodemb_convert_case — змінює регістр символів рядка mb_convert_encoding — перетворює рядок з одного кодування в іншеmb_convert_kana — аналогічно попередній функції, але застосовується для кодувань «kana»mb_convert_variables — перетворює символи у змінній/змінних з одного кодування в іншеmb_encode_mimeheader — кодує рядок для MIME заголовкаmb_decode_mimeheader — декодує рядок в MIME заголовкуmb_encode_numericentity — кодує символ в числове HTML посиланняmb_decode_numericentity — кодує символ в числове HTML посиланняmb_detect_encoding — визначає кодування символівmb_detect_order — встановлюємо/одержуємо список кодувань для механізмів визначення кодуванняmb_encoding_aliases — отримати псевдоніми відомого типу кодуванняmb_ereg_match — збіг з регулярним виразом для мультибайтових рядківmb_ereg_replace_callback — callback функція пошуку та заміна за регулярним виразом мультибайтових рядківmb_ereg_replace — заміна в рядку згідно регулярного виразуmb_ereg_search_getpos — початкова позиція збігу з регулярним виразомmb_ereg_search_getregs — результат останнього порівняння з регулярним виразомmb_ereg_search_init — ініціалізація пошуку збігів регулярному виразуmb_ereg_search_pos — повертає позицію і довжину частини рядка, що збігається з регулярним виразомmb_ereg_search_regs — повертає частину рядка, що відповідає регулярному виразуmb_ereg_search_setpos — задає початкову позицію в рядку, з якої почнеться пошук відповідностей регулярному виразуmb_ereg_search — пошук відповідностей регулярному виразу для мультибайтових рядківmb_ereg — збіги з регулярним виразомmb_eregi_replace — виконує заміну за регулярним виразом без урахування реєструmb_eregi — пошук відповідностей регулярному виразу без урахування регіструmb_get_info — отримати внутрішні налаштування mbstringmb_http_input — визначити кодування символів вхідних даних HTTP запитуmb_http_output — встановити/отримати кодування символів виводу HTTPmb_internal_encoding — встановити/отримати внутрішнє кодування скриптуmb_language — встановити/отримати поточну мовуmb_list_encodings — повертає масив всіх підтримуваних кодуваньmb_ord — отримати кодову точку символу Unicodemb_output_handler — callback-функція, що перетворює кодування символів у вихідному буферіmb_parse_str — розбір параметрів GET/POST/COOKIE запитів і встановлення глобальних зміннихmb_preferred_mime_name — отримати набір символів MIMEmb_regex_encoding — дізнатись/встановити поточне кодування для регулярних виразів (лише мультибайтові рядки)mb_regex_set_options — отримати/налаштувати значення за замовчуванням налаштувань функцій mbregexmb_scrub — не документованоmb_send_mail — відправлення закодованого повідомленняmb_split — розділ рядка за регулярним виразомmb_str_split — повертає масив символів для багатобайтових рядківmb_strcut — отримання лише частини рядкаmb_strimwidth — обрізання рядка до заданих розмірівmb_stripos — знайти останню позицію входження одного рядка в інший (регістрозалежний пошук)mb_stristr — знайти перше входження підрядка в рядку без урахування регіструmb_strlen — кількість символів в рядку (довжина рядка)mb_strpos — пошук першого входження підрядка в рядкуmb_strrchr — пошук останнього входження підрядка в рядкуmb_strrichr — Пошук останнього входження підрядка в рядку без урахування регіструmb_strripos — знайти останню позицію входження одного рядка в інший без урахування регіструmb_strrpos — знайти останню позицію входження одного рядка в іншийmb_strstr — знайти перше входження підрядка в рядкуmb_strtolower — перетворює увесь рядок у нижній регістрmb_strtoupper — перетворює увесь рядок у верхній регістрmb_strwidth — визначити ширину рядкаb_substitute_character — встановити/отримати символ заміниmb_substr_count — рахує кількість входжень підрядкаmb_substr — повертає частину рядка (обрізає рядок за заданими параметрами)