1

我创建了一个从文本文件中提取有效单词的 PHP 代码:

$pspell_link = pspell_new("en");
$handle = fopen("list.txt", "r");

if ($handle) {
            while (($line = fgets($handle)) !== false) {

                    $line = str_replace(' ', '', $line);
                    $line = preg_replace('/\s+/', '', $line);

                    if (pspell_check($pspell_link, $line)) 
                    {
                        echo $line."<br>";
                    }

            }
}

假设 list.txt 包含

ghgh fghy 你好你好

上面的代码只会打印:你好

我要做的是打印 Hellothere 以及它包含两个有效单词 Hello 和 there

4

1 回答 1

0

(已编辑)

您可以尝试将常量PSPELL_RUN_TOGETHER作为选项传递:

$pspell_link = pspell_new( "en", Null, Null, Null, PSPELL_RUN_TOGETHER );

来自 PHP 文档:

mode 参数是拼写检查器工作的模式。有几种可用模式:

PSPELL_FAST - 快速模式(建议数量最少)

PSPELL_NORMAL - 正常模式(更多建议)

PSPELL_BAD_SPELLERS - 慢速模式(很多建议)

PSPELL_RUN_TOGETHER - 将连词视为合法复合词。也就是说,“thecat”将是一个合法的复合词,尽管两个词之间应该有一个空格。更改此设置仅影响 pspell_check() 返回的结果;pspell_suggest() 仍然会返回建议。

此外,替换 中的所有空格line,您将像“ghghfghyHelloHellothere”这样的字符串传递给pspell_check()

尝试改为爆炸:

(...)
$words = explode( ' ', $line );
foreach($words as $word)
{
    if (pspell_check($pspell_link, $word)) 
    {
        echo "---> ".$word.PHP_EOL;
    }
}
(...)
于 2016-01-24T22:24:36.447 回答