PHP: Pspell関数 - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<printer_writepspell_add_to_personal>
view the version of this page
Last updated: Tue, 21 Dec 2004

XCVII. Pspell関数

導入

これらの関数により、単語のスペルチェックを行い、修正案を提案させる ことが可能となります。

注意: この拡張モジュールはWindows環境 では利用できません。

要件

aspellライブラリおよびpspellライブラリが必要です。これらは、それぞ れ および で取得可能です。

インストール手順

PHPをコンパイルする際にオプション --with-pspell[=dir]を追加する必 要があります。

実行用の設定

この拡張モジュールは設定ディレクティブを全く定義しません。

リソース型

この拡張モジュールはリソース型を全く定義しません。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

PSPELL_FAST (integer)

PSPELL_NORMAL (integer)

PSPELL_BAD_SPELLERS (integer)

PSPELL_RUN_TOGETHER (integer)

目次
pspell_add_to_personal -- ユーザの単語リストに単語を追加
pspell_add_to_session --  カレントのセッションの単語リストに単語を追加
pspell_check -- 単語をチェックする
pspell_clear_session -- カレントのセッションをクリアする
pspell_config_create -- 辞書をオープンする際に使用される設定を作成する
pspell_config_data_dir --  location of language data files
pspell_config_dict_dir --  Location of the main word list
pspell_config_ignore -- 長さがN文字未満の単語を無視する
pspell_config_mode -- 返される提案の数のモードを変更する
pspell_config_personal -- 個人の単語リストを保持するファイルを設定する
pspell_config_repl -- 置換候補を保持するファイルを設定する
pspell_config_runtogether --  複合語を有効な単語の組み合わせとして考慮する
pspell_config_save_repl --  単語リストと共に置換リストを保存するかどうかを定義する
pspell_new_config --  指定した設定に基づき新規辞書をロードする
pspell_new_personal -- 個人の単語リストを有する新規辞書をロードする
pspell_new -- 新規辞書をロードする
pspell_save_wordlist -- 個人の単語リストをファイルに保存する
pspell_store_replacement -- 単語を置換するものを保存する
pspell_suggest -- 単語のスペルについて修正候補を示す


add a note add a note User Contributed Notes
Pspell関数
abhishek dot ratani at gmail dot com
22-Feb-2005 10:46


Great tutorial on spell checking. Check it out!
flint at modulusgroup dot com
29-Dec-2004 10:19
For those will problems installing on Win32 with IIS:

Symptom: browser just hangs when calling pspell function. Running PHP.exe from command line causes pspell to claim that there is a corrupt file. Running Aspell works just fine on the command line.

You need new data files:

You can download and get more information about it here:


Just replace the data directory in C:\Programs Files\Aspell\ with the new data directory you downloaded.

No more problems.
10-Dec-2004 09:52
For those of us in the Windows world, here is a great link on how to enable pspell for PHP on Win32:
tidd
28-Sep-2004 05:31
In response to csnyder's comment about calling aspell instead of using the aspell or pspell libs:

If you are running a low traffic site this will work fine and it's a good idea.

If, however, you have many customers using your spell checking script, this method does not scale well and you should consider spending the time to make the libs work properly.
sudhakar at mindscapecomputing dot com
13-Jul-2004 11:39
The Following Steps to install Aspell and Pspell to work with PHP

Download these files


Pspell Package

Aspell Package

English Dictionary
for Aspell

untar the files
tar zxvf pspell-.12.2.tar.gz
tar zxvf aspell-0.50.1.tar.gz
tar jxvf aspell-en-0.50-2.tar.bz2

we have to install pspell first:

Get into the pspell-.12.2 directory

# ./configure
# make
# make install

# cd modules
# ./add-modules
# cd ..
# make
# make install

Second we have to install Aspell:
Get into the aspell-0.50.1 directory

# ./configure
# make
# make install

After Sucessfully compiled Apply the Dictionary
Get into the aspell-en-0.50-2 directory

# ./configure

Which should output something like:

Finding Dictionary file location ... /usr/local/lib/aspell
Finding Data file location ... /usr/local/share/aspell

# make
# make install

To Check aspell is working try this example

Create a file test.txt add the line "I am speled wron" and save the file

# aspell check test.txt

from the command line.
after the above example work.

use --with-pspell when compiling PHP
webmaster at script-tease dot net
12-Apr-2004 02:26
Easy way to make a spellchecker:

<?

function spellcheck ( $string ) {
  
$words = preg_split('/[\W]+?/',$string);
  
$misspelled = $return = array();
  
$int = pspell_new('en');
   foreach (
$words as $value) {
       if (!
pspell_check($int, $value)) {
          
$misspelled[] = $value;
       }
   }
   foreach (
$misspelled as $value) {
      
$return[$value] = pspell_suggest($int, $value);
   }
   return
$return;
}

?>
jrweir _a_t_ yahoo
30-Mar-2004 07:15
I had the same problems after following the detailed instructions for installing on windows but was able to solve them by doing the following:

first, I copied all the files in the data directory of the aspell install (ie. C:\Program Files\Aspell\data) to a unix machine and ran dos2unix on all of the files and then copied them back.

second, added this line before the pspell_new("en") call
pspell_config_create("en");

hope this works for you too.
kevina at gnu dot org
12-Jan-2003 10:19
Aspell Author Here.

Since Aspell 0.50, Pspell is no longer used.  It is not necessary to download and install the Pspell package, only Aspell 0.50 (or better) is required.  Aspell now provided a backwards compatibility interface for programs expecting the old Pspell interface (such as PHP).

Even though Aspell now provided a new "Aspell" interface this, the PHP Pspell interface is the one you want to use.  The Aspell PHP interface is the one used with a *very* old version of Aspell as the manual says.

Sorry if this is confusing, but it is not really my fought as I have no control over PHP development.  Eventually a new Aspell interface should be provided for PHP which uses the new Aspell interface provided with Aspell 0.50 but for now the Pspell interface will work just fine.

Note: If you wish to use an older version of Aspell (_before_ 0.50) than both Aspell and Pspell are required.
csnyder at chxo dot com
11-Oct-2002 07:37
As an alternative to mucking about with the compiled-in aspell/pspell functions, which only check word by word, one could write a script that calls aspell as a shell exec to check a whole block of text:


(there is a view-source option)

Not sure about Linux or Windows, but installing aspell on FreeBSD was trivially easy from the ports collection. No doubt such a script could be easily modified to use ispell instead if you'd rather.

<printer_writepspell_add_to_personal>
 Last updated: Tue, 21 Dec 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Mon Mar 14 08:13:06 2005 Local time zone must be set--see zic manual page