soundex

関数の概要

PHPの soundex 関数は、英語の単語の発音を数値と英字のコードで表現するための関数です。この関数を使うことで、綴りは異なっても似た発音の単語を判別しやすくなります。主に名前の類似検索や音声データとテキストの照合など、発音に基づく文字列比較に便利です。

パラメータの説明

  • str(文字列): 発音コードを取得したい文字列を指定します。通常は英字の名前や単語を渡します。

戻り値

入力文字列のサウンデックスコードを表す4文字の文字列を返します。最初の文字は元の文字列の最初の文字を大文字にしたもの、続く3文字は数字で構成されます。もし入力が空文字列の場合は "Z000" を返します。

使用例

基本的な使い方

<?php
echo soundex("Smith");   // 出力例: S530
echo soundex("Smyth");   // 出力例: S530
?>

上記の例では、スペルは異なりますが「Smith」と「Smyth」が同じ発音コード S530 となり、発音が似ていることがわかります。

名前の類似検索の例

<?php
$names = ["Smith", "Smyth", "Johnson", "Johnsen"];
$search = "Smith";
$searchCode = soundex($search);

foreach ($names as $name) {
    if (soundex($name) === $searchCode) {
        echo $name . " は似た発音の名前です。n";
    }
}
?>

この例では、配列内の名前で Smith と発音コードが一致するものだけを抽出します。

異なる単語の比較例

<?php
$word1 = "Robert";
$word2 = "Rupert";
echo soundex($word1) . "n"; // R163
echo soundex($word2) . "n"; // R163
?>

「Robert」と「Rupert」も同じ発音コード R163 を持つため、発音が類似していると判定されます。

関連する関数

  • metaphone(): こちらも発音を表すコードを取得しますが、より詳細な音素ベースの表現を返します。
  • levenshtein(): 文字列の編集距離を計算し、異なる文字数を判定します。発音ではなくスペルの違いを測るのに適しています。

まとめ

soundex は、英語圏の単語や名前の発音を数値コード化するPHPの便利な関数です。似た発音の文字列を簡単に比較できるため、類似検索や名前マッチングに活用できます。初心者でも直感的に使える一方、発音の細かな違いには対応できない場合もあるため、必要に応じて metaphone() などの他の発音関数と組み合わせることもおすすめです。