chr

(PHP 4, PHP 5, PHP 7, PHP 8)

chr数値から、1バイトの文字列を生成する

説明

chr(int$codepoint): string

codepoint を符号なし数値と解釈することによって指定された文字を含む、 1文字からなる文字列を返します。

この関数は、ASCII, ISO-8859, Windows 1252 のような シングルバイトエンコーディング においては、文字セットのマッピングテーブルにある望みの文字の位置を 渡すことで、一文字の文字列を作り出すのに使えます。 しかし、この関数は string のエンコーディングについて知りませんし、 特に UTF-8 や UTF-16 のようなマルチバイトエンコーディングについては、 この関数に Unicode のコードポイントは渡せないことに注意してください。

この関数はord()の逆の動作をします。

パラメータ

codepoint

0 から 255 までの数値

妥当な範囲 (0..255) 外の値を渡した場合は、255 とのビット AND を行います。 この処理は、以下のコードと同様のアルゴリズムです。

while ($bytevalue < 0) {
$bytevalue += 256;
}
$bytevalue %= 256;

戻り値

指定されたバイトを含む、一文字からなる文字列を返します。

変更履歴

バージョン説明
7.4.0codepoint に対して、 サポートされていない入力が与えられた場合、 黙って0 にキャストする動作をしなくなりました。

例1 chr() の例

<?php
// Assumes the string will be used as ASCII or an ASCII-compatible encoding

$str = "この文字列はエスケープで終了します: ";
$str .= chr(27);



$str = sprintf("この文字列はエスケープで終了します: %c", 27);
?>

例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;
?>

上の例の出力は以下となります。


🐘

参考

  • sprintf() - フォーマットされた文字列を返す のフォーマット文字列 %c
  • ord() - 文字列の先頭バイトを、0 から 255 までの値に変換する
  • » ASCII テーブル
  • mb_chr() - Unicode のコードポイントに対応する文字を返す
  • IntlChar::chr() - コードポイント値に対応する、Unicode 文字を返す
To Top