5

PHP スペル チェック アプリを動作させようとしていますが、エンチャント拡張機能を使用しようとすると、単語のスペル ミスをチェックすることができません。

ウェブサーバー構成

  • PHP バージョン 5.4.7
  • Windows Server 2008
  • IIS7

php.ini ファイルで、エンチャント拡張機能を有効にしました。例えば:

extension=php_enchant.dll

サンプルコード:

    $broker = enchant_broker_init();
    $tag = 'en_US';

    $bprovides = enchant_broker_describe($broker);
    echo "Current broker provides the following backend(s):\n";
    print_r($bprovides);

    $dicts = enchant_broker_list_dicts($broker);
    echo "Current broker provides the following dictionaries:\n";
    print_r($dicts);

    enchant_broker_set_dict_path($broker, ENCHANT_MYSPELL, 'C:\php5.4.7\lib\enchant\MySpell');

    if (enchant_broker_dict_exists($broker, $tag)) {
     $dict = enchant_broker_request_dict($broker, $tag);
     $word = 'soong';
     $isCorrectlySpelled = enchant_dict_check($dict, $word);

     if ($isCorrectlySpelled !== true) {
      $suggestions = enchant_dict_suggest($dict, $word);

      echo nl2br(print_r($suggestions, true));
     } else {
      echo 'The word is correctly spelt!';
     }
    }

    enchant_broker_free($broker);

戻り値:

Current broker provides the following backend(s):
Array
(
    [0] => Array
        (
            [name] => ispell
            [desc] => Ispell Provider
            [file] => C:\php5.4.7\libenchant_ispell.dll
        )

    [1] => Array
        (
            [name] => myspell
            [desc] => Myspell Provider
            [file] => C:\php5.4.7\libenchant_myspell.dll
        )

)
Current broker provides the following dictionaries:

ただし、これは「soong」という単語のスペルが正しいかどうかはわかりません。

4

3 に答える 3

2

私の場合、それらのバックエンドさえリストされていません!!!

libenchant_ispell.dll と libenchant_myspell.dll を「c:\PHP\lib\enchant」にコピーする必要があります。

次に、辞書をダウンロードして、この UNDOCUMENTED 関数を使用した後:

enchant_broker_set_dict_path($broker, ENCHANT_MYSPELL, 'C:\PHP\enchant\MySpell');

私はついにそれを機能させました!

于 2013-11-24T01:07:44.567 に答える
2

ここや他の場所で他の人が提案した手順を組み合わせて実行する必要がありました。これらの手順のすべてが同じ場所に文書化されているネット上の単一の場所を見つけることができなかったので、ここに書いています。xampからインストールされたWindows 7とphp 5.5を使用しています。これが私がしなければならなかったことです:

  1. php.ini の extension=php_enchant.dll 行のコメントを外します。
  2. php インストール ディレクトリを Windows PATH に追加します。そうしないと、php_enchant.dll は libenchant.dll を見つけることができません。
  3. libenchant_ispell.dll と libenchant_myspell.dll を php インストール ディレクトリから [php]/lib/enchant/ に移動します。これらのフォルダーを作成する必要があります。
  4. [php]/share/myspell/dicts に en_US.aff と en_US.dic を追加します。これらのフォルダーも作成する必要があります。これらのファイルは、少し異なる名前で C:\Program Files\Firefox\dictionaries にあります。しかし、名前を en_US.aff および en_US.dic に変更する必要があります。そうしないと、機能しません。

手順を実行し、Paul のコードで enchant_broker_set_dict_path() の呼び出しを削除すると、うまく機能しました。

于 2015-03-17T15:35:30.647 に答える
2

Enchant 拡張機能を Windows、IIS、および PHP 5.4.7 で動作させるのは非常に簡単であることがわかりました。

必要なのは、いくつかのフォルダーを作成し、いくつかの辞書ファイルをダウンロードするだけで、見事に機能します!

https://wiki.mozilla.org/L10n:Dictionariesに移動し、スペル チェックを行う辞書をダウンロードします。

次に、PHP フォルダーに次のディレクトリ構造を作成します: [PHP]\share\myspell\dicts

最後に、*.aff および *.dic ファイル (例: en_US.aff および en_US.dic) を dicts フォルダーに配置すると、機能します。

上記のコードは、辞書情報とスペル候補を返します。

Current broker provides the following backend(s):
Array
(
    [0] => Array
        (
            [name] => ispell
            [desc] => Ispell Provider
            [file] => C:\php5.4.7\libenchant_ispell.dll
        )

    [1] => Array
        (
            [name] => myspell
            [desc] => Myspell Provider
            [file] => C:\php5.4.7\libenchant_myspell.dll
        )

)
Current broker provides the following dictionaries:
Array
(
    [0] => Array
        (
            [lang_tag] => en_GB
            [provider_name] => myspell
            [provider_desc] => Myspell Provider
            [provider_file] => C:\php5.4.7\libenchant_myspell.dll
        )

    [1] => Array
        (
            [lang_tag] => en_US
            [provider_name] => myspell
            [provider_desc] => Myspell Provider
            [provider_file] => C:\php5.4.7\libenchant_myspell.dll
        )

)
Array
(
    [0] => suing
    [1] => sung
    [2] => goons
    [3] => song
    [4] => soon
    [5] => soon g
)

クレジット:

http://www.php.net/manual/en/enchant.examples.php#109925

http://my.opera.com/iwanluijks/blog/using-enchant-with-php-on-windows-part-1

于 2013-05-24T06:25:43.753 に答える