PHP - 如何检查字符串的拼写是否正确?不需要“拼写单词的建议”。只返回普通的真假

时间:2015-12-07 14:50:10

标签: php dictionary

我有一个随机生成的字符串数组。现在,我将如何根据美国英语词典检查字符串是否拼写正确。这样,我就可以从列表中删除非英语单词。

我现在所做的是遍历列表并查询字典单词数据库。不幸的是,如果我的列表包含数百个单词,它就没有效率。

我已经阅读过关于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的方法?

1 个答案:

答案 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'

生成的结果为lovelyvolley

有关详情,请查看MySQL, REGEXP - Find Words Which Contain Only The Following Exact Letters