C言語なら俺に聞け 163 (987レス)
C言語なら俺に聞け 163 http://mevius.5ch.net/test/read.cgi/tech/1721137434/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
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
860: デフォルトの名無しさん (ワッチョイ 5f98-4xcB) [sage] 2025/07/01(火) 05:48:42.66 ID:M5z4vIa80 >>859 × > PHPの文字列は ○ unicodeは × > C言語で作っていれば ○ asciiに限定すれば お前は基本的なところがまるで理解出来てない そもそも文字コードの話なのだから、どの言語でも同じ 特定の言語を使用すると回避出来るとかいう話にはなり得ない http://mevius.5ch.net/test/read.cgi/tech/1721137434/860
938: デフォルトの名無しさん (ワッチョイ 467f-OkwB) [] 2025/07/17(木) 08:01:19.44 ID:9jYPg0KZ0 >>859 PHPじゃなくてUTF-8やSJISを使っているならみんな同じだぞw http://mevius.5ch.net/test/read.cgi/tech/1721137434/938
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.027s