首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本文件PHP中提取有效单词

从文本文件PHP中提取有效单词
EN

Stack Overflow用户
提问于 2016-01-24 22:17:27
回答 1查看 625关注 0票数 1

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

代码语言:javascript
复制
$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包含

Hello你好Hello

上面的代码将只打印: Hello

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-24 22:24:36

(编辑)

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

代码语言:javascript
复制
$pspell_link = pspell_new( "en", Null, Null, Null, PSPELL_RUN_TOGETHER );

来自PHP文档:

模式参数是拼写检查器将在其中工作的模式。有几种可用的模式: PSPELL_FAST -快速模式(最少的建议数) PSPELL_NORMAL -正常模式(更多建议) PSPELL_BAD_SPELLERS -慢模式(很多建议) PSPELL_RUN_TOGETHER -把结合在一起的词当作合法的复合词.也就是说,“the a”将是一个法律复合词,尽管这两个词之间应该有一个空格。更改此设置只会影响pspell_check()返回的结果;pspell_suggest()仍将返回建议。

此外,替换line中的所有空格,将一个类似于"ghghfghyHelloHellothere“的字符串传递给pspell_check()

试着爆炸:

代码语言:javascript
复制
(...)
$words = explode( ' ', $line );
foreach($words as $word)
{
    if (pspell_check($pspell_link, $word)) 
    {
        echo "---> ".$word.PHP_EOL;
    }
}
(...)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34982207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档