PHP的similar_text()和in_array()不能正常工作
我正在尝试使用similar_text()和in_array()在
PHP中创建一个简单的拼写检查和建议程序.
我有一个文本文件dictionary.txt,这是英语中的大多数单词. 首先,我将文本文件中的所有单词分别放在一个新行中.然后在用户输入和提交时,我使用in_array()检查他们输入的单词是否在数组中.如果是,那么他们拼写正确. 如果不是,那么我使用similar_text()来查找数组中接近拼写错误的单词的单词. 我遇到了两个我无法解决的问题,我相信我正在根据PHP文档正确使用in_array()和similar_text(). 第一个问题是,当用户键入并提交文本文件中的单词并且也应该在数组中时,else会触发并且不应该发生.因为它在文本文件中,所以它应该在数组中,并且in_array()应该评估为true. 第二个问题是我得到一个错误,即我没有定义通过similar_text()存储两个单词之间相似性百分比的变量. 这是我的代码: <?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> 解决方法
将您的添加更改为行
function addTo($line){ return strtolower(trim($line)); } 并将您的输入更改为 $input = strtolower(trim($_GET['checkSpelling'])); 文件命令有一个令人讨厌的习惯,就是留下尾随的换行符,所以你可能根本不匹配…修剪应该处理它.其他变化只是为了使它不区分大小写. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |