我有一个随机生成的字符串数组。现在,我将如何根据美国英语词典检查字符串是否拼写正确。这样,我就可以从列表中删除非英语单词。
我现在所做的是遍历列表并查询字典单词数据库。不幸的是,如果我的列表包含数百个单词,它就没有效率。
我已经阅读过关于Aspell但不幸的是,我必须安装它,而且我受到限制,因为我在共享的网络托管中托管该程序。
无论如何,这是我到目前为止所拥有的:
// generate random strings using the method I coded
// returns a string array of generated strings
// no duplicates generated here
// just plain permutations
$generated_list = generate();
由于我阅读了一篇文章,而不是循环并对每个字符串进行查询,我只做了一个查询,例如Performing A Query In A Loop:
$only_english_list = [];
if (count($generated_list)) {
$result = $connection->query("SELECT `word` FROM `us_eng` WHERE `word` IN (" . implode(',', $generated_list));
while ($row = $result->fetch_row()) {
$only_english_list[] = $row['word'];
}
}
但是,检查字符串是否在英文字典中更有效吗?类似于返回true或false的方法?
答案 0 :(得分:1)
我现在有了这个问题的答案。这就是我的所作所为。我只是立即利用MySQL的能力,而不是生成需要大量时间和资源的排列。也就是说,我使用REGEXP或LIKE来对应一定长度的英语单词表。
因此,对于可以从vleoly
形成的英语单词,我将此查询用于us_6
所指示的长度为6的英语单词表。
SELECT word FROM us_6 WHERE
word REGEXP 'v' AND
word REGEXP 'l.*l' AND
word REGEXP 'e' AND
word REGEXP 'o' AND
word REGEXP 'y'
生成的结果为lovely
和volley
。
有关详情,请查看MySQL, REGEXP - Find Words Which Contain Only The Following Exact Letters