ヌルバイトをPHPは8進数表記では\0、16進数表記では\x00と表す(パーセントエンコードは%00)。
ヌルバイトを文字列の終端と解釈する関数がある(バイナリセーフでない関数)。
バイナリセーフでない関数はヌルバイト以降の文字列を無視する。
下記コードはfalseを返す(ereg_matchはバイナリーセーフでない関数の例)。
ereg_match('[a-zA-Z0-9]','&\x00A')
上記のマッチング対象は実質&だけになる。
ヌルバイト(\0, \x00)を通常の文字として認識する関数。
preg_match('/[a-zA-Z0-9_]/','&\x00A') → true
preg_matchは\x00を文字列の終端と認識しない。最後のAとマッチしてtrueを返す。
ヌルバイト(\0, \x00)を文字列の終端と認識する関数。
ereg_match('[a-zA-Z0-9_]','&\x00A') → false
ereg_matchはは\x00を文字列の終端と認識する。最後のAとはマッチせずにfalseを返す。マッチ検査対象文字列は&のみとなる。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。