PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのgrapheme_strlen()関数とは?書記素単位で文字列の長さを取得する方法

書記素(グラフェム)とは

書記素(グラフェム)とは、書記体系における最小の機能単位のことです。音に対応する文字として表現できる、書き言葉の最小単位と考えることができます。

たとえば、「é」のようなアクセント付き文字は、内部的には「e」と発音符の組み合わせとして扱われることがありますが、書記素としては1つの単位として数えられます。このようなマルチバイト文字や結合文字を正しく処理するために、PHPでは専用の関数が用意されています。

grapheme_strlen()関数の概要

PHPのgrapheme_strlen()関数は、文字列の長さを書記素単位で取得するために使用されます。バイト数やコードポイント数ではなく、人間が認識する「文字」としての長さを返す点が特徴です。

この関数はPHP 5.3.0以降のバージョンで利用可能であり、intl拡張モジュールが必要です。

構文

int grapheme_strlen(string $string)

パラメータ

grapheme_strlen()関数が受け取るパラメータは以下の1つだけです。

  • $string − 長さを測定したい対象の文字列です。このパラメータにはUTF-8エンコーディングされた文字列を指定する必要があります。

戻り値

この関数は、成功した場合に文字列の長さ(書記素単位の整数値)を返します。失敗した場合にはFalseを返します。

使用例

以下の例では、結合文字を含む文字列に対してgrapheme_strlen()関数を使用し、その長さを取得しています。

<?php
   // 結合文字を含む文字列 "abca\xCC\x8Ao\xCC\x88a\xCC\x8A" の
   // 長さを取得します
   $integer = grapheme_strlen("abca\xCC\x8Ao\xCC\x88a\xCC\x8A\x122");

   // 結果を出力
   var_dump($integer);
?>

出力結果

int(8)

この例では、見た目上の文字数が8文字としてカウントされています。結合文字(ダイアクリティカルマーク)が個別の文字としてではなく、元の文字と一体となった1つの書記素として正しく処理されていることがわかります。

まとめ

grapheme_strlen()関数は、日本語の濁点付き仮名や欧米言語のアクセント付き文字など、複数のコードポイントから構成される文字を正しく1文字として数えたい場合に非常に有用です。strlen()やmb_strlen()との違いを理解し、用途に応じて適切な関数を選択しましょう。

  1. PHPのquoted_printable_encode()関数の使い方を徹底解説

    PHPのquoted_printable_encode()関数は、8ビット文字列をquoted-printable形式の文字列に変換するための組み込み関数です。quoted-printableはMIME(Multipurpose Internet Mail Extensions)で定義されているエンコード方式の一つで、主に電子メールで非ASCII文字(日本語など)を安全に送信する際に利用されます。構文quoted_printable_encode(str)パラメータstr − 変換対象となる8ビット文字列を指定します。この引数は必須です。戻り値quoted_printable_encode()

  2. PHPのquoted_printable_decode()関数とは?使い方とサンプルコードを解説

    PHPのquoted_printable_decode()関数は、quoted-printable形式でエンコードされた文字列を、8ビット文字列にデコードするために使用されます。メール本文などで使われるquoted-printableエンコーディングを元に戻したい場合に便利な関数です。 構文 quoted_printable_decode(str) パラメータ str − デコード対象となる入力文字列を指定します。 戻り値 quoted_printable_decode()関数は、デコード後の8ビットASCII文字列を返します。 使用例 以下は、quoted_printable_dec