(PHP 4, PHP 5, PHP 7, PHP 8)
chr — Генерирует однобайтовую строку из числа
Функция возвращает строку из одного символа, который определяется путём
интерпретации значения параметра codepoint
как целого беззнакового числа.
Функцией создают односимвольную строку в однобайтовой кодировке наподобие ASCII, ISO-8859 или Windows 1252 путём передачи позиции символа в таблице сопоставления кодировки. Обратите внимание, функция не распознаёт кодировку строк и не передаёт значение кодовой точки Юникода для генерации строки в многобайтовой кодировке наподобие UTF-8 или UTF-16.
Функция дополняет функцию ord().
codepointЦелое число от 0 до 255.
Значения, которые выходят за пределы допустимого диапазона 0..255, потребуется сложить со значением 255 через побитовое И, что соответствует следующему алгоритму:
while ($bytevalue < 0) {
$bytevalue += 256;
}
$bytevalue %= 256;Функция возвращает односимвольную строку, которая содержит заданный байт.
| Версия | Описание |
|---|---|
| 8.5.0 |
Передача целочисленных значений за пределами интервала [0, 255]
устарела.
|
| 7.4.0 |
Функция теперь выдаёт предупреждение,
когда приводит к 0
значение параметра codepoint,
которое невозможно интерпретировать как кодовую точку.
|
Пример #1 Пример генерации однобайтовой строки из числа функцией chr()
<?php
// Предполагается, что выводится строка в ASCII или в ASCII-совместимой кодировке
$str = "Эта строка заканчивается символом escape: ";
$str .= chr(27); /* Эта строка кода добавляет символ escape в конец строки переменной $str */
echo $str, PHP_EOL;
/* Часто полезнее такой код */
$str = sprintf("Эта строка заканчивается символом escape: %c", 27);
echo $str, PHP_EOL;
Пример #2 Поведение при переполнении
<?php
echo chr(-159), chr(833), PHP_EOL;Результат выполнения приведённого примера:
aA
Пример #3 Пример создания строки в кодировке UTF-8 из отдельных байтов
<?php
$str = chr(240) . chr(159) . chr(144) . chr(152);
echo $str, PHP_EOL;Результат выполнения приведённого примера:
%c