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 に含まれていると仮定しましょう

ぐふふふ こんにちは、こんにちは。

上記のコードは : Hello のみを出力します。

私がやろうとしているのは、Hellothere を印刷することと、Hello and there という 2 つの有効な単語が含まれていることです。

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」は合法的な複合語になりますが、2 つの単語の間にはスペースが必要です。この設定の変更は、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 に答える