Str pad: примеры (PHP)
str_pad(string string, int length [, string pad_string [, int pad_type]]): stringФункция str_pad в PHP
Функция str_pad используется для дополнения строки до определенной длины другой строкой. Эта функция часто применяется при форматировании вывода, например, для выравнивания чисел или текста в таблицах, генерации строк фиксированной длины или добавления префиксов/суффиксов.
Функция принимает четыре аргумента:
- input (string) - исходная строка, которую нужно дополнить.
- pad_length (int) - желаемая длина строки после дополнения. Если значение меньше или равно длине исходной строки, строка возвращается без изменений.
- pad_string (string, необязательный) - строка, используемая для дополнения. По умолчанию - пробел.
- pad_type (int, необязательный) - указывает, с какой стороны дополнять строку. Может принимать значения: STR_PAD_RIGHT (по умолчанию), STR_PAD_LEFT, STR_PAD_BOTH.
Основные примеры использования str_pad
echo str_pad('Test', 10, '-');Test------
echo str_pad('42', 5, '0', STR_PAD_LEFT);00042
echo str_pad('PHP', 10, '*', STR_PAD_BOTH);***PHP****
echo str_pad('Hello', 14, '+-', STR_PAD_BOTH);+-+Hello+-+
Похожие функции в PHP
Повторяет строку заданное количество раз. Используется, когда нужно просто повторить строку без учета итоговой длины.
Функция для форматирования строк, позволяет задавать отступы и заполнители через спецификаторы формата, например, %10s. Более универсальна для сложного форматирования.
Функции изменения регистра, не являются прямыми аналогами, но часто используются вместе со str_pad для форматирования.
Типичные ошибки
echo str_pad('Test', -5, '-');Test
Функция возвращает исходную строку без изменений, что может быть неочевидно.
echo str_pad('Hello', 10, '');Предупреждение и возврат исходной строки.
echo str_pad('Привет', 10, '-');Привет----
Функция не учитывает многобайтовую кодировку, длина считается в байтах, а не в символах. Для корректной работы с UTF-8 следует использовать mb_str_pad или аналоги.
Изменения в PHP 8
В PHP 8 поведение функции str pad было изменено в двух аспектах:
- Аргумент pad_length теперь приводится к типу int, тогда как ранее принимались нецелые числа с их преобразованием.
- При передаче отрицательного значения pad_length выбрасывается исключение ValueError, а не возвращается исходная строка.
echo str_pad('Test', -5, '-');ValueError: str_pad(): Argument #2 ($pad_length) must be greater than or equal to 0
Расширенные примеры
$data = [
['PHP', 8.2],
['Python', 3.11],
['JavaScript', 'ES2022']
];
foreach ($data as $row) {
echo str_pad($row[0], 12) . str_pad($row[1], 10, ' ', STR_PAD_LEFT) . "\n";
}PHP 8.2 Python 3.11 JavaScript ES2022
$progress = 75;
$barLength = 20;
$filled = (int) ($progress / 100 * $barLength);
echo '[' . str_pad(str_repeat('=', $filled), $barLength, '-', STR_PAD_RIGHT) . ']';[==============-----]
echo str_pad('ID', 8, '0', STR_PAD_LEFT) . "\n";
echo str_pad('Secret', 12, '*', STR_PAD_BOTH);000000ID ***Secret***
function mb_str_pad($str, $length, $pad_string, $pad_type = STR_PAD_RIGHT) {
$diff = strlen($str) - mb_strlen($str);
return str_pad($str, $length + $diff, $pad_string, $pad_type);
}
echo mb_str_pad('Привет', 10, '-');Привет----
Аналоги в других языках
print('Test'.ljust(10, '-'))
print('42'.rjust(5, '0'))
print('PHP'.center(10, '*'))Test------ 00042 ***PHP****
console.log('Test'.padEnd(10, '-'));
console.log('42'.padStart(5, '0'));Test------ 00042
SELECT LPAD('42', 5, '0'), RPAD('Test', 10, '-');00042 | Test------
В отличие от PHP, в JavaScript нет встроенной функции для дополнения с обеих сторон.