Наша українська мова, як і будь-яка кирилиця, відноситься до багатобайтових з точки зору 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
— повертає частину рядка (обрізає рядок за заданими параметрами)