W3docs

hebrev()

Функция hebrev() преобразует логический текст на иврите в визуальный текст для корректного отображения на веб-странице.

Функция PHP hebrev() преобразует логический текст на иврите (хранящийся в порядке набора — справа налево) в визуальный текст (расположенный слева направо, чтобы дисплей без поддержки RTL отображал его корректно). Это достигается за счёт обращения последовательности символов иврита в строке при сохранении читаемости знаков препинания и пробелов.

На этой странице описывается, что делала hebrev(), её синтаксис и параметры, запускаемые примеры, причины удаления функции и альтернативы для современного кода.

Внимание

hebrev() была объявлена устаревшей в PHP 7.2 и полностью удалена в PHP 8.0. Вызов её в PHP 8+ вызывает ошибку Error: Call to undefined function hebrev(). Эта страница предназначена только для понимания и поддержки устаревшего кода. Для нового кода доверьте управление направлением браузеру с помощью HTML dir="rtl" или CSS direction: rtl — см. Почему функция была удалена и что использовать вместо неё.

Синтаксис

hebrev(string $string, int $max_chars_per_line = 0): string
ПараметрОбязательныйОписание
$stringДаТекст на иврите (в логическом порядке) для преобразования.
$max_chars_per_lineНетМаксимальное количество символов в строке для переноса слов. При значении 0 (по умолчанию) дополнительный перенос не применяется.

Функция возвращает строку, преобразованную в визуальный порядок. Символы, не относящиеся к ивриту (ASCII-буквы, цифры, знаки препинания), остаются на своих местах.

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

Простейшее использование hebrev() — преобразование логической строки на иврите в визуальный порядок:

php— editable, runs on the server

Последовательность символов иврита обращается, и текст читается корректно в среде с направлением слева направо. Результат:

תירבע רבדמ ינא ,ןכ

Перенос строк с помощью $max_chars_per_line

Второй параметр вставляет переносы строк так, чтобы ни одна строка не превышала заданную ширину. Он действует только тогда, когда последовательность символов иврита длиннее ограничения — короткие строки, как в примере ниже, умещаются в одну строку, поэтому вывод идентичен базовому примеру. При значении 40 текст значительно короче ограничения и не переносится:

php— editable, runs on the server

Результат:

תירבע רבדמ ינא ,ןכ

Чтобы перенос действительно сработал, последовательность символов иврита должна быть длиннее $max_chars_per_line; только тогда вставляются переносы строк.

Почему функция была удалена и что использовать вместо неё

hebrev() появилась до эпохи поддержки Unicode-двунаправленного рендеринга в браузерах. Трюк с «визуальным порядком» был необходим, когда терминалы и старые браузеры не могли самостоятельно переупорядочивать текст, идущий справа налево. Сегодня уровень рендеринга справляется с этим сам, поэтому обращение символов в PHP является одновременно избыточным и деструктивным (оно вносит информацию о компоновке прямо в данные).

Для нового кода сохраняйте текст в естественном логическом порядке, а направление задавайте в разметке:

<p dir="rtl">כן, אני מדבר עברית</p>

Или с помощью CSS:

.hebrew { direction: rtl; }

Браузер самостоятельно переупорядочит и перенесёт текст, а исходная строка останется чистой для поиска, копирования и хранения.

Родственная функция hebrevc() выполняла то же преобразование, дополнительно заменяя символы новой строки тегами <br>; она также была удалена в PHP 8.0 — современный CSS переносит строки автоматически.

Связанные функции

  • hebrevc() — то же преобразование, с дополнительным преобразованием символов новой строки в <br> (также удалена в PHP 8.0).
  • strrev() — обращает каждый символ строки (не учитывает специфику иврита).
  • wordwrap() — стандартный и по-прежнему поддерживаемый способ переноса текста на заданной ширине строки.
  • nl2br() — вставляет HTML-переносы строк перед символами новой строки в строке.

Практика

Практика
Что делает функция hebrev() в PHP?
Что делает функция hebrev() в PHP?
Was this page helpful?