PHPで簡単なスペルチェックと提案プログラムを使用similar_text()
して作成しようとしています。in_array()
私は、英語のほとんどの単語である Dictionary.txt というテキスト ファイルを持っています。
まず、テキスト ファイル内のすべての単語をそれぞれ新しい行に配列に入れます。次に、ユーザーの入力と送信時に、ユーザーが入力した単語が を使用して配列に含まれているかどうかを確認しin_array()
ます。もしそうなら、彼らはそれを正しく綴った.
そうでない場合はsimilar_text()
、スペルミスのある単語に近い単語を配列内で見つけるために使用します。
解決できなかった 2 つの問題が発生しました。PHP のドキュメントに従って適切に使用in_array()
していると思います。similar_text()
最初の問題は、ユーザーがテキスト ファイルにあり、配列にもあるはずの単語を入力して送信すると、else が発生し、それが発生しないことです。これはテキスト ファイルにあるため、配列にある必要があり、in_array()
true と評価されるはずです。
2 番目の問題は、2 つの単語間の類似度を保存している変数がsimilar_text()
定義されていないというエラーが発生することです。similar_text()
ドキュメントのコメントの例と同じように、私はそれを使用しています。実際、$percentageSimilarity
各比較の前にリセットと再定義を行っています。定義されていないというエラーが表示されるのはなぜですか?
これが私のコードです:
<?php
function addTo($line){
return $line;
}
$words = array_map('addTo', file('dictionary.txt'));
if(isset($_GET['checkSpelling'])){
$input = (string)$_GET['checkSpelling'];
$suggestions = array();
if(in_array($input, $words)){
echo "you spelled the word right!";
}
else{
foreach($words as $word){
$percentageSimilarity=0.0;
similar_text($input, $word, $percentageSimilarity);
if($percentageSimilarity>=95){
array_push($suggestions, $word);
}
}
echo "Looks like you spelled that wrong. Here are some suggestions: \n";
foreach($suggestions as $suggestion){
echo $suggestion;
}
}
}
?>
<!Doctype HTMl>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Spell Check</title>
</head>
<body>
<form method="get">
<input type="text" name="checkSpelling" autocomplete="off" autofocus />
</form>
</body>
</html>