私は単純な「暗号」スクリプトを作成する任務を負っています。暗号は、提供された文字列内の他の文字をランダムに置換し、暗号文の最後に追加の文字列として置換を発行することによって構築されます。
これは、英数字および一部の記号では正常に機能しているようです。しかし、スクリプトにGBP記号(£)を発行しようとすると、機能しなくなりました。
これで、すべてのステップでUTF-8エンコーディングを使用していることを確認しました。
スクリプトは1ページで構成されています。PHPファイルの先頭には、次のものがあります。
<?php header("content-type: text/html; charset=utf-8"); ?>
私のHTMLページでは、次の<head>
領域にこれがありました。
<meta charset="utf-8" />
私の「暗号」および「解読」形式では、次のようになります。
accept-encoding="utf-8"
Chromeでページを読み込むと、[ツール]-> [エンコード]でチェックインすると、UTF-8エンコードを使用しているように見えます。
問題は、私のスクリプトが各文字を1つずつ実行するときに、GBP記号の長さが2文字であると見なしていることのようです。strlen
これは、またはを使用する場合でも当てはまりますmb_strlen
。
GBPシンボルや他のシンボル(まだテストされていません)を1文字の長さにまで削除できる方法はありますか?または、現在の文字が長さ2の特殊文字であることを検出し、それに応じてイテレータを進めるために、いくつかの追加ロジックをプログラムする必要がありますか?
よろしくお願いします。