Как выровнять текст по центру средствами PHP
Центрирование текста в PHP: эффективные приёмы
Для вывода текста по центру на веб-странице PHP генерирует HTML с соответствующими CSS-правилами. В консольных приложениях применяются функции форматирования строк. В каждом случае есть свои наилучшие подходы.
Как создать функцию для центрирования текста в HTML?
Наиболее универсальное решение - написать функцию, которая оборачивает текст в div с классом или inline-стилем:
function centerText($text, $tag = 'p') {
return "<{$tag} style='text-align:center;'>" . htmlspecialchars($text) . "{$tag}>";
}
echo centerText('Привет, мир!');Php center text (выровнять текст по центру в php)
<p style='text-align:center;'>Привет, мир!</p>
Пояснение:
- Функция принимает текст и тег (по умолчанию <p>).
- Используется
htmlspecialcharsдля защиты от XSS. - CSS-свойство
text-align:centerцентрирует содержимое.
Типичная ошибка: забыть экранировать кавычки в строке стиля. Например, style='text-align:center;' внутри атрибута HTML нужно писать через одинарные или экранировать двойные.
Решение: использовать в PHP двойные кавычки с экранированием или конкатенацию.
Цель: создание переиспользуемого компонента для любых текстовых блоков.
Как использовать Bootstrap для центрирования?
Если сайт использует Bootstrap, достаточно добавить класс text-center:
echo "Текст по центру";Этот подход минимизирует CSS-код и соответствует современным стандартам.
Проблема: класс text-center не работает, если не подключён Bootstrap.
Решение: определить собственный CSS-класс.
Как выровнять текст в консоли с помощью PHP?
Для центрирования текста в терминале используется функция str_pad с учётом ширины экрана:
$width = 80;
$text = 'Привет, мир!';
$len = mb_strlen($text);
$padding = max(0, ($width - $len) / 2);
$centered = str_repeat(' ', $padding) . $text;
echo $centered;(вывод: текст с пробелами слева)
Пояснение: mb_strlen корректно считает длину для UTF-8. str_repeat добавляет пробелы.
Ошибка: использование strlen вместо mb_strlen для кириллицы даёт неверную длину.
Решение: всегда использовать многобайтовые функции.
Как использовать таблицы для центрирования?
Старый способ - центрирование через атрибут align у таблицы. Не рекомендуется, но может встретиться в легаси:
echo "Текст
";Современная альтернатива - Flexbox или Grid.
Как центрировать блок с помощью CSS Flexbox из PHP?
Генерация HTML с контейнером Flexbox:
echo "Текст
";Подходит для сложных макетов.
Расширенные примеры центрирования текста в PHP
Функция с поддержкой CSS-классов и атрибутов
function centerTextAdvanced($text, $class = '', $tag = 'div') {
$classAttr = $class ? " class='$class'" : '';
$style = " style='text-align:center;'";
return "<{$tag}{$classAttr}{$style}>" . htmlspecialchars($text) . "{$tag}>";
}
echo centerTextAdvanced('Заголовок', 'my-center', 'h2');<h2 class='my-center' style='text-align:center;'>Заголовок</h2>
Центрирование текста в изображении с библиотекой GD
$img = imagecreatetruecolor(400, 100);
$bg = imagecolorallocate($img, 255, 255, 255);
$fg = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $bg);
$text = 'Привет, GD!';
$font = 'arial.ttf';
$bbox = imagettfbbox(20, 0, $font, $text);
$x = (400 - ($bbox[2] - $bbox[0])) / 2;
$y = (100 - ($bbox[1] - $bbox[7])) / 2 + 20;
imagettftext($img, 20, 0, $x, $y, $fg, $font, $text);
header('Content-Type: image/png');
imagepng($img);
imagedestroy($img);(изображение с текстом по центру)
Центрирование в PDF (TCPDF)
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF();
$pdf->AddPage();
$pdf->SetFont('dejavusans', '', 14);
$pdf->Cell(0, 10, 'Центрированный текст', 0, 1, 'C');
$pdf->Output('example.pdf', 'I');PDF-файл с текстом по центру
Многобайтовое центрирование для консоли с учётом ширины символов
function mb_center($text, $width = 80) {
$len = mb_strwidth($text, 'UTF-8');
$pad = max(0, intval(($width - $len) / 2));
return str_repeat(' ', $pad) . $text;
}
echo mb_center('ツ エモジ テスト', 50);(пробелы слева, текст с эмодзи выравнивается с учётом ширины)
Центрирование с помощью printf и форматирования строки
$width = 40;
$text = 'Выравнивание';
$format = "%{$width}s";
echo sprintf($format, $text);(строка длиной 40 символов с пробелами слева - правостороннее выравнивание, не центрирование)
Примечание:
printf не умеет центрировать напрямую, но комбинацией sprintf с вычислением отступов можно имитировать центрирование.