関数・クラス解説

metaphone

version:PHP 4, PHP 5, PHP 7 (公式)

文字列の metaphone キーを取得する

フォーマット

string : metaphone ( string $string [, int $max_phonemes = 0 ] )

パラメータ

string $string
対象文字列

int $max_phonemes = 0
返り値の metaphone キーの最大長を指定できる。ただし音素によっては指定した最大長よりも少し長くなる場合がある。デフォルト値の0を指定すると無制限となる

返値 string
metaphone キーを文字列で返します。バージョン8.0.0 以下の環境では、失敗時にfalse が返る

解説

metaphone とはアルファベットの綴りから発音を導くアルゴリズムの一つです。metaphone() 関数ではこのアルゴリズムに従いキーを計算しています。例えば2つの単語の発音を比較する時、発音が同じかあるいは近い場合、生成されるキーも同様となります。
似たようなアルゴリズムを利用した関数にsoundex()があります。

記述サンプル

//PHP 7.4.6で実行

//発音が同様のものを指定して実行 
echo metaphone('four');
echo metaphone('for');

//結果表示
FR
FR

/* ----------------------------- */

//発音が近いものを指定
echo metaphone('japan');
echo metaphone('japanese');

//結果表示
JPN
JPNS

/* ----------------------------- */

//返り値の最大長を指定して実行
echo metaphone('japan', 3);
echo metaphone('japanese', 3);

//結果 
JPN
JPN

/* ----------------------------- */

//マルチバイトは空文字が返る
var_dump(metaphone('サラリーマン'));

//結果 
string(0) ""

参考リンク

soundex 文字列の soundexキー(音声表現文字列)を返す

タグ

metaphone アルゴリズム 発音 String 文字列


公式リファレンス

書式

metaphone ( string $string [, int $max_phonemes = 0 ] ) : string

説明

string の metaphone キーを計算します。

soundex() と同様に metaphone は、 発音が似た単語について同じキーを作成します。metaphone は、 英語の発音の基本的ルールを知っているので、 soundex() よりも正確です。 metaphone が生成するキーは可変長です。

metaphone は、Lawrence Philips <lphilips at verity dot com> により 開発されました。["Practical Algorithms for Programmers", Binstock & Rex, Addison Wesley, 1995] で解説されています。

パラメータ

string
入力文字列。
max_phonemes
このパラメータは、返される metaphone キーの長さを最大 max_phonemes 文字 までに制限します。 しかし、phonemes は完全に書き換えられるので、 結果の文字列の長さは、max_phonemes よりも少し長くなります。 デフォルト値の 0 は、無制限であることを意味します。

返値

metaphone キーを文字列で返します。

更新履歴

バージョン 説明
8.0.0 この関数は、失敗時に false を返さなくなりました。

サンプル

例1 metaphone() の基本的な例

var_dump(metaphone('programming')); var_dump(metaphone('programmer'));

上の例の出力は以下となります。

string(7) "PRKRMNK" string(6) "PRKRMR"

例2 phonemes パラメータの使用例

var_dump(metaphone('programming', 5)); var_dump(metaphone('programmer', 5));

上の例の出力は以下となります。

string(5) "PRKRM" string(5) "PRKRM"

例3 phonemes 引数を使う

この例では、 metaphone() 関数は5文字の文字列を生成するように指定されていますが、 最後の音素を分割する必要がある ('x' は 'KS' に書き換えられるとします), ため、返される文字列は6文字になります。

var_dump(metaphone('Asterix', 5));

上の例の出力は以下となります。

string(6) "ASTRKS"

ワード検索


※入力キーワードが、関数名・説明文・タグに含まれるものを検索

関数名アルファベット別

A B C D E F G H I J
K L M N O P Q R S T
U V W X Y Z _

最終更新一覧

stristr
 大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

stripslashes
 バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

stripos
 大文字小文字を区別せずに文字列が最初に現れる位置を取得する

stripcslashes
 addcslashes() でクォートされた文字列をアンクォートする

strip_tags
 文字列から HTML と PHP のタグを除去して返却

strcspn
 指定した文字が最初に現れる位置を調べる

strcoll
 ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

strcmp
 2つの文字列を比較し同じか(あるいは大小)を判定する

strchr
 strstr() のエイリアス

strcasecmp
 2つの文字列を比較(大文字小文字を区別せず同じとみなす)

カテゴリー一覧

PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール