『プログラミング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以降の文字をどうやって表示する方法?