『プログラミングPHP』で、識別子の1文字目について以下のように書かれていた。

PHPでは、変数名や関数名、定数名、クラス名として識別子を使用します。識別子の最初の文字として使用できるのは、アルファベットの大文字と小文字、アンダースコア、そしてASCIIコードで0x7Fから0xFFまでの文字のいずれかのみとなります。

なんで前半は文字の種類を羅列しているのに、後半はASCIIコードなんだろう、全部ASCIIコードで説明できないの?と思って、調べてみた。

参考

ASCII文字テーブル
http://www.asciitable.com/
ASCII - Wikipedia
https://ja.wikipedia.org/wiki/ASCII

確認

以下を実行してみた。

ascii.php
$code = 0x80;

while ($code <= 0xFF) {
    printf('%s', chr($code));
    $code++;
}
$ php ascii.php



!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

文字としては表示されないのもあったりするんですね。
0x80以降は表示方法がわからず・・・。

0x20以前は「制御文字」だから表示はされないみたい。
このへんで何をやってるのか、wikipedia見てもいまいちよくわからなかった。

制御文字 - Wikipedia
https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97

結論

ASCII文字には、表示できない文字もたくさんある。(制御文字)
アルファベットの大文字と小文字の間に記号が入っていたりして、連続的にグルーピングできない。

課題

制御文字はそれぞれ何をしているのか?
0x80以降の文字をどうやって表示する方法?

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.