Я создал код 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 и там
Вы можете попробовать передать константу 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;
}
}
(...)
Других решений пока нет …