Mb split: примеры (PHP)
mb_split(string $pattern, string $string, int $limit = -1): array|falseФункция mb_split предназначена для разделения многобайтовых строк с использованием регулярных выражений. Она является частью расширения mbstring и корректно работает с кодировками UTF-8 и другими многобайтовыми кодировками.
Функция применяется при необходимости разделения строк, содержащих символы за пределами ASCII, где стандартная функция preg_split может работать некорректно с многобайтовыми символами.
- pattern - регулярное выражение для поиска разделителей
- string - входная строка для разделения
- limit - максимальное количество элементов в результате (необязательный, по умолчанию -1)
- encoding - кодировка символов (необязательный)
$str = "яблоко,груша,апельсин,банан";
$result = mb_split(",", $str);
print_r($result);Array
(
[0] => яблоко
[1] => груша
[2] => апельсин
[3] => банан
)$str = "один два три четыре пять";
$result = mb_split("\s+", $str, 3);
print_r($result);Array
(
[0] => один
[1] => два
[2] => три четыре пять
)$str = "слово€разделитель€текст";
$result = mb_split("€", $str);
print_r($result);Array
(
[0] => слово
[1] => разделитель
[2] => текст
)Функция для разделения строк с использованием регулярных выражений. Работает быстрее, но может некорректно обрабатывать многобайтовые строки без модификатора /u.
Разделяет строку по фиксированному разделителю. Более эффективна для простого разделения без регулярных выражений.
Разбивает строку на массив символов. Не поддерживает многобайтовые строки без mb_str_split.
Использование mb_split предпочтительно при работе с многобайтовыми строками и сложными шаблонами разделения. Для ASCII-строк лучше подходит preg_split. Простое разделение по фиксированной строке эффективнее выполнять через explode.
mb_regex_encoding('ASCII');
$str = "строка с кириллицей";
$result = mb_split("\s+", $str);
print_r($result);Array
(
[0] => строка с кириллицей
)$str = "текст1;текст2;текст3";
$result = mb_split(";;", $str);
print_r($result);Array
(
[0] => текст1;текст2;текст3
)// При отключенном расширении mbstring
$result = mb_split(",", "a,b,c");
var_dump($result);NULL
Улучшена обработка ошибок при неверных кодировках. Добавлены предупреждения при использовании устаревших кодировок.
Изменено поведение при передаче null в параметрах. Теперь вызывает TypeError вместо предупреждения. Улучшена производительность.
Добавлены предупреждения о устаревших кодировках. Улучшена совместимость с современными стандартами Unicode.
$str = "100+200-300*400/500";
$result = mb_split('([+\-*/])', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);Array
(
[0] => 100
[1] => +
[2] => 200
[3] => -
[4] => 300
[5] => *
[6] => 400
[7] => /
[8] => 500
)$text = "Слово1 Слово2 Слово3"; // Используются полноширинные пробелы
$result = mb_split('[\s ]+', $text);
print_r($result);Array
(
[0] => Слово1
[1] => Слово2
[2] => Слово3
)$data = "Имя:Иван;Возраст:30;Город:Москва";
$pairs = mb_split('[;:]', $data);
print_r($pairs);Array
(
[0] => Имя
[1] => Иван
[2] => Возраст
[3] => 30
[4] => Город
[5] => Москва
)$csv = "значение1,\"значение,с запятой\",значение3";
$result = mb_split(',(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)', $csv);
print_r($result);Array
(
[0] => значение1
[1] => "значение,с запятой"
[2] => значение3
)$text = "Привет";
$chars = mb_split('', $text);
array_shift($chars); // Удаляем пустой первый элемент
print_r($chars);Array
(
[0] => П
[1] => р
[2] => и
[3] => в
[4] => е
[5] => т
)$multiline = "Первая строка\nВторая строка\r\nТретья строка\rЧетвертая";
$lines = mb_split("\r\n|\n|\r", $multiline);
print_r($lines);Array
(
[0] => Первая строка
[1] => Вторая строка
[2] => Третья строка
[3] => Четвертая
)import re
str = "яблоко,груша,апельсин"
result = re.split(r',', str)
print(result)['яблоко', 'груша', 'апельсин']
let str = "яблоко,груша,апельсин";
let result = str.split(',');
console.log(result);['яблоко', 'груша', 'апельсин']
SELECT REGEXP_SUBSTR('яблоко,груша,апельсин', '[^,]+', 1, 1) as item1,
REGEXP_SUBSTR('яблоко,груша,апельсин', '[^,]+', 1, 2) as item2;item1: яблоко item2: груша
Python и JavaScript имеют встроенную поддержку Unicode, поэтому не требуют специальных функций для многобайтовых строк. MySQL использует другой подход с функциями извлечения подстрок.