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