現在の位置: ホーム> 最新記事一覧> 文字マッピングの交換にstrtr()を使用してord()を使用する実用的な方法は何ですか?

文字マッピングの交換にstrtr()を使用してord()を使用する実用的な方法は何ですか?

gitbox 2025-06-17

PHPでは、 ord()およびstrtr()関数は、開発者がキャラクター処理の効率を改善するのに役立つ非常に実用的なツールです。 ord()は、文字を対応するASCIIコードに変換でき、 strtr()は文字列の文字を置き換える簡潔な方法を提供します。この記事では、文字マッピングの交換用にこれら2つの機能を組み合わせ、実際のアプリケーションでいくつかの方法を紹介する方法について説明します。

1。ord ()関数の基本的な使用

ord()関数は、文字のASCIIコード値を返すPHPビルトイン関数です。例えば:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-string">'A'</span></span><span>);  </span><span><span class="hljs-comment">// 出力: 65</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-string">'a'</span></span><span>);  </span><span><span class="hljs-comment">// 出力: 97</span></span><span>
</span></span>

ord()を使用すると、文字のASCIIコードを簡単に取得できます。これは、キャラクターの比較、変換、その他の操作に非常に基本的で強力な機能を提供します。

2。strtr ()関数の基本的な使用

strtr()は、文字列内の特定の文字を置き換える関数です。 2つの一般的な用途があります。

  • 文字置き換え:ソース文字列の文字を文字マッピングテーブルを介してターゲット文字に置き換えます。

  • 文字範囲の交換:指定された範囲内のすべての文字を交換します。

たとえば、交換には文字マップを使用します。

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"h"</span></span><span>, </span><span><span class="hljs-string">"j"</span></span><span>);  </span><span><span class="hljs-comment">// 意思 'h' 置き換えます 'j'</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>;  </span><span><span class="hljs-comment">// 出力: jello</span></span><span>
</span></span>

この例では、 strtr()を使用して、文字列内の文字を直接交換します。 Strtr()は、小範囲の特性置換を扱う場合、非常に効率的です。

3。ord ()strtr()の組み合わせ

ord()strtr()を組み合わせると、より複雑な文字マッピングタスクを処理できます。 ord()関数を使用して文字のASCIIコードを取得し、 strtr()を使用して文字を置き換えることができます。この組み合わせ方法は、文字エンコードが必要ないくつかのシナリオで特に役立ちます。

3.1 ASCIIコードに基づくマッピング

ASCIIコード値に基づいて文字置換が必要な文字列があるとします。 ord()を使用して各文字のASCIIコードを取得し、これらのコード値に従って条件付きで置き換えることができます。例えば:

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"h"</span></span><span>, </span><span><span class="hljs-string">"j"</span></span><span>);  </span><span><span class="hljs-comment">// 直接交換</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>;  </span><span><span class="hljs-comment">// 出力: jello</span></span><span>

</span><span><span class="hljs-comment">// 別の方法:に基づく ord() 文字マッピングを実行します</span></span><span>
</span><span><span class="hljs-variable">$new_str</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-title function_ invoke__">str_split</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>) </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$char</span></span><span>) {
    </span><span><span class="hljs-variable">$ascii</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$ascii</span></span><span> == </span><span><span class="hljs-number">104</span></span><span>) {  </span><span><span class="hljs-comment">// ASCII 値はです 104 時間です 'h'</span></span><span>
        </span><span><span class="hljs-variable">$new_str</span></span><span> .= </span><span><span class="hljs-string">'j'</span></span><span>;  </span><span><span class="hljs-comment">// 置き換えます 'j'</span></span><span>
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-variable">$new_str</span></span><span> .= </span><span><span class="hljs-variable">$char</span></span><span>;  </span><span><span class="hljs-comment">// オリジナルの文字を保持します</span></span><span>
    }
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$new_str</span></span><span>;  </span><span><span class="hljs-comment">// 出力: jello</span></span><span>
</span></span>

この例では、 ord()関数を使用して、文字のASCIIコードを取得し、このコードに基づいて文字を置き換えるかどうかを決定します。

3.2大規模な文字マッピング

場合によっては、文字のセットやアルファベット全体の交換など、より広い範囲のキャラクター置換を行う必要がある場合があります。 strtr()は、複数の文字を一度に渡すことをサポートして、それらを交換します。この時点で、文字マッピングは、 ord()関数を組み合わせることで生成できます。これにより、多数の文字の置換を自動的に処理できます。

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"abcdefg"</span></span><span>;
</span><span><span class="hljs-variable">$map</span></span><span> = [];

</span><span><span class="hljs-comment">// マッピング関係を作成します:意思小写字母 a-z 置き換えます A-Z</span></span><span>
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">97</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt;= </span><span><span class="hljs-number">122</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
    </span><span><span class="hljs-variable">$map</span></span><span>[</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$i</span></span><span>)] = </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$i</span></span><span> - </span><span><span class="hljs-number">32</span></span><span>);  </span><span><span class="hljs-comment">// ASCII 码差値はです 32(小文字から大文字)</span></span><span>
}

</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$map</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>;  </span><span><span class="hljs-comment">// 出力: ABCDEFG</span></span><span>
</span></span>

この例では、最初にループを介して文字マップを生成し、小文字を大文字に変換します。次に、 strtr()を使用してすべての文字を一度に置き換えます。

4。実用的なアプリケーションシナリオ

4.1文字の暗号化と復号化

ord()strtr()の組み合わせは、単純な文字暗号化と復号化アルゴリズムを簡単に実装できます。たとえば、 word()を介して文字のASCIIコードを取得し、それを暗号化し(固定値を追加するなど)、 strtr()に置き換えることができます。

 <span><span><span class="hljs-comment">// シンプルな文字暗号化:各キャラクターの ASCII コードプラス 1</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$encrypted</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-title function_ invoke__">str_split</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>) </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$char</span></span><span>) {
    </span><span><span class="hljs-variable">$encrypted</span></span><span> .= </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>) + </span><span><span class="hljs-number">1</span></span><span>);  </span><span><span class="hljs-comment">// 意思各キャラクターの ASCII コードプラス 1</span></span><span>
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$encrypted</span></span><span>;  </span><span><span class="hljs-comment">// 出力: ifmmp</span></span><span>
</span></span>

4.2 HTMLエスケープ文字処理

HTMLでは、 < to &lt;など、一部のキャラクターを逃れる必要があります。 、 > to &gt;ord()strtr()を使用して、カスタムエスケープ文字処理を実装できます。

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"&lt;div&gt;Hello World&lt;/div&gt;"</span></span><span>;
</span><span><span class="hljs-variable">$trans</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, [
    </span><span><span class="hljs-string">"&lt;"</span></span><span> =&gt; </span><span><span class="hljs-string">"&amp;lt;"</span></span><span>,
    </span><span><span class="hljs-string">"&gt;"</span></span><span> =&gt; </span><span><span class="hljs-string">"&amp;gt;"</span></span><span>,
    </span><span><span class="hljs-string">"&amp;"</span></span><span> =&gt; </span><span><span class="hljs-string">"&amp;amp;"</span></span><span>
]);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$trans</span></span><span>;  </span><span><span class="hljs-comment">// 出力: &amp;lt;div&amp;gt;Hello World&amp;lt;/div&amp;gt;</span></span><span>
</span></span>

この例では、HTML注入の問題を回避するために、いくつかの特殊文字をstrtr()に直接置き換えます。

5。概要

ord()strtr()を組み合わせることにより、PHP開発者は、キャラクターマッピングの交換において柔軟性と効率を高めることができます。両方の関数は、暗号化および復号化された、文字置換、または動的な文字マッピングテーブルの生成など、重要な役割を果たすことができます。それらの使用法を理解し、マスターすることは、さまざまなキャラクター変換の問題により効率的に対処するのに役立ちます。