Mb substr: примеры (PHP)
mb_substr(string $string, int $start, ?int $length = null, ?string $encoding = null): stringФункция mb_substr в PHP используется для получения части строки с учетом многобайтовых кодировок, таких как UTF-8. Она применяется, когда стандартная функция substr может некорректно обрабатывать символы, занимающие более одного байта.
Функция имеет следующую сигнатуру:
mb_substr(string $string, int $start, ?int $length = null, ?string $encoding = null): string
$string – обрабатываемая строка.
$start – начальная позиция. Если значение положительное, отсчет начинается с начала строки. Если отрицательное – с конца строки.
$length – максимальная длина возвращаемой подстроки. Если не указана, возвращается часть строки до конца. При отрицательном значении символы будут отброшены с конца строки.
$encoding – параметр кодировки. Если не указан, используется внутренняя кодировка.
$str = 'Привет, мир!';
echo mb_substr($str, 0, 6);Привет
$str = 'Привет, мир!';
echo mb_substr($str, -4, 4);мир!
$str = 'Привет, мир!';
echo mb_substr($str, 0, -2);Привет, ми
$str = 'Привет, мир!';
echo mb_substr($str, 8, null, 'UTF-8');мир!
substr – стандартная функция для работы с подстроками. Не поддерживает многобайтовые кодировки. Используется для однобайтовых строк.
mb_strcut – функция для получения части строки по количеству байтов с учетом многобайтовых кодировок. Полезна при работе с ограничениями по размеру в байтах.
iconv_substr – альтернативная функция для работы с подстроками в различных кодировках из модуля iconv.
$str = 'Тест';
echo mb_substr($str, 0, 10);Тест
Функция возвращает всю строку без ошибок, даже если длина превышает размер строки.
$str = 'Привет';
echo mb_substr($str, 0, 2, 'ASCII');��
Указание неправильной кодировки приводит к некорректному результату.
$str = 'abc';
echo mb_substr($str, -5, 2);ab
При отрицательном стартовом индексе, превышающем длину строки, отсчет начинается с начала.
В PHP 8.0 параметры $length и $encoding стали nullable (допускают значение null). Ранее они имели значения по умолчанию null, но не были объявлены как nullable.
В PHP 8.2 появилось предупреждение о неявном преобразовании float в int для параметров $start и $length.
$text = 'Программирование на PHP';
$result = mb_substr($text, -10, -3);
echo $result;на P
$str = 'Hello ???? World';
$part = mb_substr($str, 6, 2);
echo $part;????
$str = 'Пример';
$length = mb_strlen($str);
for ($i = 0; $i < $length; $i++) {
echo mb_substr($str, $i, 1) . " ";
}П р и м е р
function truncate($text, $limit) {
if (mb_strlen($text) <= $limit) return $text;
return mb_substr($text, 0, $limit - 3) . '...';
}
echo truncate('Длинный текст для примера', 10);Длинный те...
Mb substr в Python
text = 'Привет, мир!'
result = text[0:6]
print(result)Привет
В Python срезы строк по умолчанию работают с символами Unicode.
Mb substr в Javascript
let text = 'Привет, мир!';
let result = text.substring(0, 6);
console.log(result);Привет
Методы строк в JavaScript работают с кодовими единицами UTF-16, что может вызывать проблемы с суррогатными парами.
Mb substr в MySQL
SELECT SUBSTRING('Привет, мир!', 1, 6);Привет
Функция SUBSTRING в MySQL корректно работает с многобайтовыми символами при использовании соответствующей кодировки таблицы.