Как выровнять текст по центру средствами PHP

Раздел: Веб-разработка на PHP -> Форматирование текста в PHP

Центрирование текста в PHP: эффективные приёмы

Для вывода текста по центру на веб-странице PHP генерирует HTML с соответствующими CSS-правилами. В консольных приложениях применяются функции форматирования строк. В каждом случае есть свои наилучшие подходы.

Как создать функцию для центрирования текста в HTML?

Наиболее универсальное решение - написать функцию, которая оборачивает текст в div с классом или inline-стилем:

function centerText($text, $tag = 'p') {
    return "<{$tag} style='text-align:center;'>" . htmlspecialchars($text) . "";
}
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) . "";
}
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 с вычислением отступов можно имитировать центрирование.

Выровнять текст по центру в PHP - comments

En
Php center text (php)