W3docs

chr()

Функция chr() возвращает символ по заданному ASCII-коду. Синтаксис функции chr() в PHP и практические примеры использования.

Функция PHP chr() возвращает однобайтовую string, содержащую символ, соответствующий заданному значению байта (обычно ASCII-коду). Она является обратной к ord(), которая работает в противоположном направлении — от символа к его числовому коду.

На этой странице рассматриваются синтаксис chr(), поведение функции при значениях за пределами диапазона 0–255, а также практические приёмы построения строк из числовых кодов.

Синтаксис

chr(int $codepoint): string

chr() принимает один параметр, $codepoint, — числовое значение байта, который нужно вернуть, и возвращает string из одного символа (одного байта). Значение интерпретируется в диапазоне 0–255. Значения вне этого диапазона приводятся по модулю 256: PHP многократно прибавляет или вычитает 256, пока значение не окажется между 0 и 255. Таким образом, chr(321) эквивалентно chr(321 - 256), то есть chr(65), а chr(-1) — то же самое, что chr(255).

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

Наиболее распространённый способ использования — преобразование ASCII-кода в символ. Код 65 соответствует букве A:

php— editable, runs on the server

Вывод:

A

Мы передаём ASCII-код в chr(), и функция возвращает соответствующий символ.

Генерация последовательности символов

Так как буквы имеют последовательные ASCII-коды, можно выполнить цикл по числовому диапазону и построить последовательность. Заглавные буквы AZ имеют коды от 65 до 90:

php— editable, runs on the server

Вывод:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Каждый ASCII-код передаётся в chr(), которая возвращает соответствующую букву.

Значения вне диапазона 0–255

chr() никогда не возвращает ошибку при значении вне допустимого диапазона — вместо этого выполняется приведение по модулю 256. Это важно знать, чтобы не получать неожиданные результаты, когда арифметика выводит значение за пределы диапазона байта:

<?php
echo chr(65) . "\n";   // A   (in range)
echo chr(321) . "\n";  // A   321 - 256 = 65
echo chr(256 + 65);    // A   wraps back to 65
?>

Все три строки выводят A, поскольку 321 и 256 + 65 оба сводятся к 65.

chr() и ord()

chr() и ord() — это взаимодополняющая пара:

  • chr(int) → возвращает символ для значения байта.
  • ord(string) → возвращает значение байта первого символа string.
<?php
$code = ord("A"); // 65
echo chr($code);  // A
?>

Передача значения через ord(), а затем через chr() (или наоборот) возвращает исходное значение — функции образуют обратимую пару.

Замечание о многобайтовом тексте

chr() работает с одиночными байтами, поэтому она надёжна только для ASCII (0–127) и других однобайтовых кодировок. Функция не создаёт многобайтовый символ UTF-8: передача кодовой точки Unicode выше 255 не вернёт соответствующий эмодзи или букву с диакритическим знаком — значение будет приведено в диапазон 0–255. Для полноценной работы с кодовыми точками Unicode используйте mb_chr()mb_ord() для обратного преобразования) из расширения mbstring.

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

  • ord() — обратная функция: символ в ASCII/значение байта.
  • str_split() — разбивает string на array символов.
  • strtoupper() — преобразует string в верхний регистр.
  • PHP Strings — обзор работы со строками в PHP.

Практика

Практика
Какова функция chr() в PHP?
Какова функция chr() в PHP?
Was this page helpful?