Perquisites:hunspell
およびphp5
。バッシュからutf-8テキスト入力でshell_exec経由でプログラムを呼び出す
テストコード:
[email protected] ~/ $ echo 'sagadījās' | hunspell -d lv_LV,en_US
Hunspell 1.2.14
+ sagadīties
- は正常に動作します。
テストコード(test.phpを):
$encoding = "lv_LV.utf-8";
setlocale(LC_CTYPE, $encoding); // test
putenv('LANG='.$encoding); // and another test
$raw_response = shell_exec("LANG=$encoding; echo 'sagadījās' | hunspell -d lv_LV,en_US");
echo $raw_response;
戻り
Hunspell 1.2.14
& sagad 5 0: tagad, sagad?ties, sagaudo, sagand?, sagar?o
*
*
スクリーンショット(無効な文字を使用してコードを投稿することができませんでした):
はshell_execが扱うことができないようですutf-8を正しく、またはいくつかの追加のエンコード/デコードが必要ですか?
EDIT:有効なデータを取得するためにen_US.utf-8を使用しなければなりませんでした。
['proc_open()'](http://php.net/manual/en/function.proc-open.php)を試しましたか?プロセスに直接データを書き込むのが好きなようです。STDINはシェルを介してバウンスするよりも信頼性が高くなります。 – DaveRandom
@DaveRandom同じ出力。しかし、私はちょうど確認しました - mb_detect_encoding(stream_get_contents($ pipes [1]))はASCIIを返します。それは問題かもしれません。 –