metaphone

関数の概要

PHPの metaphone 関数は、与えられた文字列の発音コード(メタフォーンコード)を取得するための関数です。メタフォーンコードは、英語の単語の発音に基づいた文字列で、似た音の単語を比較したり検索したりする際に便利です。たとえば、綴りが似ていなくても、発音が似ている単語をマッチングさせたい場合に使用されます。

パラメータの説明

  • string(必須): 発音コードを取得したい元の文字列を指定します。
  • phonemes(任意): メタフォーンコードの最大長を整数で指定します。省略した場合はデフォルト値の 0 が適用され、制限なしで全てのコードが返されます。

戻り値

指定した文字列に対応するメタフォーンコード(発音記号を表す文字列)を返します。もし空文字列やメタフォーンコードが生成できない場合は空の文字列が返ります。

使用例

基本的な使い方

<?php
echo metaphone("example");
?>

文字列「example」のメタフォーンコードを取得し、表示します。

複数の単語での比較例

<?php
$word1 = "Smith";
$word2 = "Smyth";

if (metaphone($word1) === metaphone($word2)) {
    echo "発音が似ている単語です。";
} else {
    echo "発音が異なる単語です。";
}
?>

「Smith」と「Smyth」は綴りは違いますが、メタフォーンコードが同じため、発音が似ていると判定されます。

メタフォーンコードの長さを制限する例

<?php
// 最大4文字のメタフォーンコードを取得
echo metaphone("example", 4);
?>

発音コードの長さを制限したい場合には、第2引数で最大長を指定することが可能です。

リストから発音が近い単語を探す例

<?php
$words = ["write", "right", "wright", "rite"];
$input = "right";
$inputKey = metaphone($input);

foreach ($words as $word) {
    if (metaphone($word) === $inputKey) {
        echo $word . " は "" . $input . "" と発音が似ています。<br>";
    }
}
?>

複数の単語の中から、入力単語と発音が似ている単語を探す際に使えます。

関連する関数

  • soundex – 似た発音を持つ単語をコード化する別の関数
  • similar_text – 文字列の類似度を計算する関数
  • levenshtein – 編集距離に基づく類似度判定関数

まとめ

PHPの metaphone 関数は、単語の発音に基づいたコードを取得できるため、発音が似ている単語を判別・検索する場面で非常に便利です。特に名前の表記揺れや音声入力の検索補助など、実務においても活用できる機能なので、ぜひ使いこなしてみてください。