我正在尝试在PHP中使用
首先,我将文本文件中的所有单词分别放入一个数组中。然后,在用户输入和提交时,我使用
如果不是,则使用
我遇到了两个问题,我无法解决,并且我认为我按照PHP文档正确地使用了
第一个问题是,当用户键入并提交应该在文本文件中并且也应该在数组中的单词时,else语句会触发,这不应该发生。由于它在文本文件中,它应该在数组中,并且
第二个问题是,我收到一个错误,指出通过
这是我的代码:
similar_text()
和in_array()
来制作一个简单的拼写检查和建议程序。
我有一个文本文件dictionary.txt,其中包含大部分英语单词。首先,我将文本文件中的所有单词分别放入一个数组中。然后,在用户输入和提交时,我使用
in_array()
检查他们输入的单词是否在数组中。如果是,则说明他们拼写正确。如果不是,则使用
similar_text()
查找与拼错的单词相近的单词。我遇到了两个问题,我无法解决,并且我认为我按照PHP文档正确地使用了
in_array()
和similar_text()
。第一个问题是,当用户键入并提交应该在文本文件中并且也应该在数组中的单词时,else语句会触发,这不应该发生。由于它在文本文件中,它应该在数组中,并且
in_array()
应该评估为true。第二个问题是,我收到一个错误,指出通过
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>
file()
函数中添加FILE_IGNORE_NEW_LINES
标志。 - Ja͢ck