【PHP8.x】mb_ord関数の使い方
mb_ord関数は、指定されたマルチバイト文字列の最初の文字に対応するUnicodeコードポイントを整数値として返す関数です。PHP 4.0.6以降で使用可能です。この関数は、マルチバイト文字列を扱う際に、その文字の数値的な表現を取得するために利用されます。通常、文字列のエンコーディングは内部エンコーディングまたは mb_internal_encoding() で指定されたエンコーディングに従いますが、オプションの encoding パラメータで明示的に指定することも可能です。encoding パラメータが省略された場合、内部エンコーディングが使用されます。もし、指定された文字列が空である場合、この関数はfalseを返します。mb_ord関数は、文字列の先頭文字のみを対象とし、文字列全体を処理するわけではないことに注意が必要です。例えば、文字列 "あいうえお" の最初の文字 "あ" のUnicodeコードポイントを取得する場合などに使用します。この関数を利用することで、マルチバイト文字の比較や文字コードに基づいた処理を実装することが可能になります。システムエンジニアが文字列処理を行う際、特に多言語対応が必要なシステム開発においては、文字コードを意識したプログラミングが重要であり、mb_ord関数はそのような場面で役立ちます。
基本的な使い方
構文(syntax)
mb_ord(string $string, string $encoding = mb_internal_encoding()): int|false
引数(parameters)
string $string, ?string $encoding = null
- string $string: 文字コードを調べたい文字列を指定します。
- ?string $encoding = null: 文字列のエンコーディングを指定します。指定しない場合は、内部エンコーディングが使用されます。
戻り値(return)
int|false
指定された文字のUnicodeコードポイントを整数で返します。文字がマルチバイト文字として無効な場合はfalseを返します。
サンプルコード
PHP mb_ordで文字のUnicodeコードポイントを取得する
<?php
/**
* 文字列の最初の文字の Unicode コードポイントを返します。
* エンコーディングを指定しない場合は、内部エンコーディングを使用します。
*
* @param string $string 対象の文字列
* @param string|null $encoding 文字エンコーディング (オプション)
* @return int|false Unicode コードポイント (成功時) または false (失敗時)
*/
function getUnicodeCodePoint(string $string, ?string $encoding = null): int|false
{
// エンコーディングが指定されていない場合は、内部エンコーディングを使用します。
if ($encoding === null) {
$encoding = mb_internal_encoding();
}
// 文字列が空の場合、falseを返します。
if (empty($string)) {
return false;
}
// mb_ordを使用してUnicodeコードポイントを取得します。
return mb_ord($string, $encoding);
}
// 使用例
$string = "こんにちは";
$encoding = "UTF-8";
$codePoint = getUnicodeCodePoint($string, $encoding);
if ($codePoint !== false) {
echo "文字列 '" . $string . "' の最初の文字の Unicode コードポイントは " . $codePoint . " です。\n";
} else {
echo "Unicode コードポイントの取得に失敗しました。\n";
}
$string = "A";
$codePoint = getUnicodeCodePoint($string);
if ($codePoint !== false) {
echo "文字列 '" . $string . "' の最初の文字の Unicode コードポイントは " . $codePoint . " です。\n";
} else {
echo "Unicode コードポイントの取得に失敗しました。\n";
}
mb_ord
関数は、文字列の先頭文字に対応するUnicodeコードポイント(数値表現)を返します。PHP 8.4で利用可能です。引数$string
には、Unicodeコードポイントを取得したい文字列を指定します。オプションの引数$encoding
には、文字列の文字エンコーディングを指定します。$encoding
を省略した場合、内部文字エンコーディングが使用されます。
サンプルコードでは、getUnicodeCodePoint
関数を定義し、mb_ord
関数の使い方を示しています。getUnicodeCodePoint
関数は、文字列とそのエンコーディングを受け取り、mb_ord
を使用してUnicodeコードポイントを取得します。エンコーディングが指定されていない場合は、mb_internal_encoding()
関数で取得した内部エンコーディングを使用します。文字列が空の場合は、false
を返します。
サンプルコードでは、"こんにちは"という文字列と"A"という文字列に対して、getUnicodeCodePoint
関数を呼び出し、それぞれのUnicodeコードポイントを表示しています。"こんにちは"の場合はUTF-8エンコーディングを指定し、"A"の場合はエンコーディングを省略して内部エンコーディングを使用しています。mb_ord
関数が成功するとUnicodeコードポイントが整数値で返され、失敗するとfalse
が返されます。
mb_ord
関数は、文字列の先頭文字のUnicodeコードポイントを返します。エンコーディングを指定しない場合、PHPの内部エンコーディングが使用されます。異なるエンコーディングの文字列を扱う場合は、$encoding
引数で明示的に指定することが重要です。エンコーディングが不明な場合は、mb_detect_encoding
関数で判別を試みることができます。文字列が空の場合や、指定したエンコーディングで文字が正しく解釈できない場合はfalse
が返されるため、戻り値がfalse
でないことを確認してからコードポイントを使用してください。mb_ord
関数はマルチバイト文字を正しく処理できますが、シングルバイト文字の場合はord
関数の方が高速な場合があります。