C言語なら俺に聞け 163 (987レス)
C言語なら俺に聞け 163 http://mevius.5ch.net/test/read.cgi/tech/1721137434/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
859: デフォルトの名無しさん (オイコラミネオ MM6b-fGW2) [sage] 2025/07/01(火) 02:30:13.65 ID:LkiphQyhM PHPの文字列は、1つの文字列の中でも、文字によってバイト数が異なるそうだ。 だから、$str[$k] の $k は、文字単位ではなくバイト単位。 文字単位で指定したい場合には、 mb_substr($str, $k, 1, "UTF-8") とするとのこと。 文字列の終端には一応 0x00 が入っているが、文字の長さはバイト数で管理されており、0を 終端とはみなしていない。だから、文字コードが 0x00 の文字も文字列の中に含めることが可能。 $str = "こんにちは"; echo strlen($str); // バイト数(UTF-8なら15) echo mb_strlen($str); // 文字数(5文字) ところが、正規表現を扱う場合には、0x00 のバイトが含まれていると、文字列の終端と みなされることがある。だから、ユーザーによって入力された文字列を正規表現で 安全チェックをしたつもりでも、文字列の途中に 0x00 のバイトが含まれていて、 それ以後に危険なコードをが含まれている倍がある。 C言語で作っていれば子の様な齟齬は起きない。 http://mevius.5ch.net/test/read.cgi/tech/1721137434/859
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s