速報

imgproxyのICO処理にコード実行のおそれ|4.0.16だけでは残る問題を確認

CATEGORY

【PHP】機種依存文字のローマ数字をアルファベットに置換する方法

※本ページのリンクにはプロモーションが含まれています。

【PHP】機種依存文字のローマ数字をアルファベットに置換する方法

目次

本記事では、機種依存文字のローマ数字をアルファベットに置換する方法をご紹介しています。

ローマ数字や丸囲み数字、省略文字などは一般的に機種依存文字と呼ばれています。機種依存文字は特定の環境でしか表示されない文字の総称です。

機種依存文字はWebサイト上で表示する場合(文字コードがUTF-8の場合)は問題ないのですが、PHPで作成したフォーム経由で送信した際に「???」のように文字化けすることがあります。

すべての機種依存文字に対応し、文字化けを完全になくすことは難しいですが、入力が予測される文字(本記事ではローマ数字)であれば大幅にプログラムを改修せずに対策することが可能です。

本記事では対策の一例として、ローマ数字をアルファベットに置換して対応する方法をご紹介していきたいと思います。

では、解説していきます。

スポンサーリンク

対策するローマ数字

本記事では下記の機種依存文字をアルファベットに置換します。ローマ数字をアルファベットの「I、V、X」に置き換えます。

置換前:ⅠⅡⅢ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ
↓
置換後:I II III IV V VI VII VIII IX X

字面は少し変わりますが、文字化けで表示されるよりは幾分ましではないでしょうか。上記では「1~10」までのローマ数字を例としていますが、値はそれぞれ調整していただければと思います。

続いてローマ数字をアルファベットに置換する処理を作っていきます。

ローマ数字をアルファベットに置換する

では実際に置換する処理を組んでいきます。

といっても処理自体はPHP組み込み関数の「str_replace()」がやってくれますので、引数となる対象の文字列と、置換前・置換後のローマ数字の配列とアルファベットの配列を用意してあげるだけで済みます。

ローマ数字をアルファベットの数字に置換するサンプルは下記の通りです。

$target = "アルファマンションⅢ番館";
$before = array("Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ", "Ⅹ");
$after = array("I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X");
$result = str_replace($before, $after, $target);

上記では対象の文字列の中にローマ数字が含まれているかを検索し、含まれていればアルファベットに置換する、といった処理となります。これだけでローマ数字の文字化けを解消することができるので便利なものです。値はそれぞれの環境に合わせて変更してご利用くださいね。

スポンサーリンク

最後に

本記事でご紹介した内容はローマ数字をアルファベットに変換する以外にも、単純な文字列に置換にも応用することができます。

「str_replace()」ちゃんは使いやすい有能な関数ですので、ドキュメントなしに使えるようにしておくと良いかもですね!

以上、PHPで機種依存文字のローマ数字をアルファベットに置換する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク