Извлечение допустимых слов из текстового файла PHP

Я создал код 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 содержит

привет, привет!

Код выше будет печатать только: Привет

Я пытаюсь напечатать Hellothere, так как он содержит два правильных слова Hello и там

1 ответ

Решение

(Edited)

Вы можете попробовать передать константу 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 - Рассматривайте случайные слова как юридические соединения. То есть "кот" будет юридическим соединением, хотя между двумя словами должен быть пробел. Изменение этого параметра влияет только на результаты, возвращаемые 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;
    }
}
(...)
Другие вопросы по тегам