(PHP 4, PHP 5, PHP 7, PHP 8)
chr — 数値から、1バイトの文字列を生成する
$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.0 |
codepoint に対して、
サポートされていない入力が与えられた場合、
黙って0 にキャストする動作をしなくなりました。
|
例1 chr() の例
<?php
// Assumes the string will be used as ASCII or an ASCII-compatible encoding
$str = "この文字列はエスケープで終了します: ";
$str .= chr(27); /* $str の最後にエスケープ文字を付加する */
/* こちらの方がより便利なことが多い */
$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;
?>
上の例の出力は以下となります。