私はPHPで入力文字列を取り、 "奇妙な"文字のリストをURLに適したものに変換する基本的な関数を書いています。関数の記述は問題ではなく、奇妙な文字列で文字列をどのようにintepretsするかです。例えばPHPの文字セットの問題
、今私はこの問題を持っている:
$string = "år";
echo $string[0]; // Output: �
echo $string[1]; // Output: �
echo $string[0] . $string[1]; // Output: å
echo $string[2]; // Output: r
だから基本的にそれは私のために問題が発生する2つの文字として文字「A」、解釈します。なぜなら、文字列の各文字を個別に見て、必要に応じて置き換えたいからです。
私はUTF8ですべてをエンコードしています。上で見たように、私の問題は2つの文字として奇妙な文字を扱うUTF8で何かをしなければならないことが分かります。
これを回避するにはどうすればよいですか? UTFエンコーディングは常ににつき文字の1つのバイトではなく、あなたがより多くのスペースを必要としてあなたの非ASCII文字は、実際にメモリの複数のバイトを取る伸びるので
$string = "år";
echo $string[0]; // Output: å
echo $string[1]; // Output: r
なぜmb_substrを(使用しない)のためのメソッドを使用する必要がありますか? – Endijs
チェクアウトhttp://php.net/manual/en/function.mb-substr.php –
@Pekka私は誤解の質問 – safarov