словарь — PHP получить слова из слова, используя pspell_check

У меня была строка PHP, которая содержит английский слова. Я хочу извлечь все возможные слова из строки, а не explode() по пространству у меня есть только слово. Я имею в виду извлечение слов из слова.

Пример: Со словом "stackoverflow"Мне нужно извлечь stack, over, flow, overflow все они.

я использую pspell_check() для проверки правописания. В настоящее время я получаю следующую комбинацию.

--> sta
--> stac
--> stack
and so on.

Таким образом, я нашел только слова, соответствующие stack но я хочу найти следующие слова. Обратите внимание, что я не хочу последнее слово, как я уже.

--> stack
--> over
--> flow

Мой код:

$myword = "stackoverflow";
$word_length = strlen($myword);
$myword_prediction = $myword[0].$myword[1];
//(initial condition as words detection starts after 3rd index)

for ($i=2; $i<$word_length; $i++) {
$myword_prediction .= $myword[$i];
if (pspell_check(pspell_new("en"), $myword_prediction))
{
$array[] = $myword_prediction;
}
}

var_dump($array);

0

Решение

Как насчет, если у вас есть такой внешний цикл? В первый раз вы начинаете с первого символа $ myword. Во второй раз вы начинаете со второго персонажа и так далее.

$myword = "stackoverflow";
$word_length = strlen($myword);

$startLetter = 0;

while($startLetter < $word_length-2 ){
$myword_prediction = $myword[$startLetter] . $myword[$startLetter +1];
for ($i=$startLetter; $i<$word_length; $i++) {
$myword_prediction .= $myword[$i];
if (pspell_check(pspell_new("en"), $myword_prediction)) {
$array[] = $myword_prediction;
}
}
$startLetter ++;
}
2

Другие решения

Ну, вам нужно получить все подстроки и проверить каждую:

function get_all_substrings($input){
$subs = array();
$length = strlen($input);
for($i=0; $i<$length; $i++){
for($j=$i; $j<$length; $j++){
$subs[] = substr($input, $i, $j);
}
}
return array_unique($subs);
}

$substrings = get_all_substrings("stackoverflow");
$pspell_link = pspell_new("en");
$words = array_filter($substrings, function($word) use ($pspell_link) {
return pspell_check($pspell_link, $word);
});
var_dump($words);
1

По вопросам рекламы [email protected]