我正在创建一个程序,以检查看似随机的字母是否实际上是连贯词的字谜。
我正在使用URL中的.txt文件,其中包含德语中最常用的单词的列表,并将其转换为数组$dictionary
,其中每个元素都等同于一个单词。
$dictionary = file('https://bwinf.de/fileadmin/user_upload/BwInf/2018/37/1._Runde/Material/woerterliste.txt');
然后我使用explode()
将键入字段的字符串转换为数组中的单个单词:
$str = $_POST["str"]; //name of the text field for the string
$words = explode(" ", $str);
然后定义函数is_anagram($a, $b)
,该函数应检查字谜并在字符匹配的情况下回显$b
:
function is_anagram($a, $b) {
if (count_chars($a, 1) == count_chars($b, 1)) {
echo $b . " ";
}
}
为了比较两个数组的元素,我创建了一个foreach
循环,在其中使用了上述功能:
foreach ($words as $word) {
foreach ($dictionary as $dic) {
is_anagram($word, $dic);
}
}
如果用户编写的字符串带有一些字谜,则循环应回显$dictionary
中可以找到的某些字符串。
但是,当我提交几句话时,我知道它们是一致的字谜,该程序不会回显任何内容。
更奇怪的是,当我将$dictionary
定义为简单数组而不是使用.txt文件时,例如
$dictionary = ["ahoi", "afer", "afferent"];
该功能可以正常工作。
我非常确定$dictionary
中存在某些错误,可能是因为.txt文件很大。有人知道如何解决这个问题吗?
答案 0 :(得分:0)
$dictionary = file('https://bwinf.de/fileadmin/user_upload/BwInf/2018/37/1._Runde/Material/woerterliste.txt');
$ dictionary是一个字符串,而不是示例中的数组。
$tmpfile = file_get_contents('https://bwinf.de/fileadmin/user_upload/BwInf/2018/37/1._Runde/Material/woerterliste.txt');
$dictionary=explode("\n",$tmpfile);