Iconv substr: примеры (PHP)

Использование iconv_substr для работы с многобайтовыми строками
Раздел: Кодировки символов
iconv_substr(string $string, int $offset, ?int $length = null, ?string $encoding = null): string|false

Функция iconv_substr в PHP

Функция iconv_substr() извлекает часть строки с учетом кодировки. Она предназначена для корректной обработки многобайтовых строк, таких как UTF-8, где один символ может занимать несколько байтов.

Когда используется

Функция применяется при работе с многобайтовыми кодировками, когда стандартные функции PHP (substr) могут работать некорректно. Она учитывает реальные символы, а не байты.

Аргументы функции

Синтаксис: iconv_substr(string $string, int $offset, ?int $length = null, ?string $encoding = null): string|false

1. $string - исходная строка
2. $offset - начальная позиция (может быть отрицательной)
3. $length (опционально) - длина извлекаемой части
4. $encoding (опционально) - кодировка строки

Примеры использования iconv_substr

Базовые примеры

Извлечение части строки с положительным смещением:

echo iconv_substr('Привет мир', 0, 6, 'UTF-8');
Привет

Извлечение с отрицательным смещением:

echo iconv_substr('Привет мир', -3, null, 'UTF-8');
мир

Использование без указания кодировки:

echo iconv_substr('Тестовая строка', 3, 5);
товая

Альтернативные функции в PHP

mb_substr

Аналогичная функция из расширения mbstring. Предпочтительнее использовать при работе с многобайтовыми строками, если установлено расширение mbstring.

substr

Стандартная функция PHP, которая работает с байтами, а не символами. Не подходит для многобайтовых кодировок, но быстрее для однобайтовых.

grapheme_substr

Функция из расширения intl для работы с графемными кластерами (например, символы с диакритическими знаками).

Аналоги в других языках

Iconv substr в Python

text = 'Привет мир'
print(text[0:6])
Привет

Iconv substr в Javascript

let text = 'Привет мир';
console.log(text.substring(0, 6));
Привет

Iconv substr в MySQL

SELECT SUBSTRING('Привет мир', 1, 6);
Привет

Распространенные ошибки

Некорректная кодировка
echo iconv_substr('Тест', 0, 2, 'UNKNOWN_ENCODING');
Warning: iconv_substr(): Wrong charset, conversion from `UNKNOWN_ENCODING' to `...' is not allowed
Смещение за пределами строки
echo iconv_substr('Тест', 10, 2, 'UTF-8');
false
Использование с неверным типом данных
echo iconv_substr([1,2,3], 0, 2, 'UTF-8');
Warning: iconv_substr() expects parameter 1 to be string, array given

Изменения в PHP 8.x

В PHP 8.0 параметр $length стал nullable (может принимать значение null).

В PHP 8.1 добавлена поддержка отрицательных значений в параметре $length.

Расширенные примеры

Работа с эмодзи

Корректное извлечение строк с эмодзи:

Пример php
$text = 'Hello ???? World ????';
echo iconv_substr($text, 6, 2, 'UTF-8');
????
Обработка текста с диакритикой
Пример php
$text = 'Café crème';
echo iconv_substr($text, 0, 4, 'UTF-8');
Café
Использование отрицательной длины
Пример php
$text = 'Программирование';
echo iconv_substr($text, 0, -5, 'UTF-8');
Программи
Обработка HTML-сущностей
Пример php
$text = 'Текст & символы';
echo htmlspecialchars(iconv_substr($text, 0, 10, 'UTF-8'));
Текст &

PHP iconv_substr function comments

En
Iconv substr Cut out part of a string