Introduction
In this article I will explain spell checking of words in a string using PHP. The "Pspell_new()" function is used to open a link to the appropriate language dictionary, and the "pspell_check()" function iterates over the word list. Before using this function obtain the instructions from the PHP manual at "www.php.net/pspell".
Example1
In the following example if a word in a paragraph or sentences and words that are incorrectly spelled are indentified, then pspell_check() function returns false.
<?php
$pspell_link = pspell_new("en");
if (pspell_check($pspell_link, "testt")) {
echo "This is a valid spelling";
} else {
echo "Sorry, wrong spelling";
}
?>
The following example checks the file line by line. You can have the previous listing check a file rather than a variable for misspelled words.
Example2
Note It is important to remember that pspell_check() returns false on a numeric string.
<?php
$file = "badspelling.txt";
//check spelling open dictionary link
$dict = pspell_new("en", "british", "", "", PSPELL_FAST);
// open file
$fp = fopen ($file, 'r') or die ("Cannot open file $file");
// here read file line by line
$lineCount = 1;
while ($line = fgets($fp, 2048)) {
// clean up trailing whitespace
$line = trim($line);
// check spelling of each word
$line = preg_replace('/[0-9]+/', '', $line);
$words = preg_split('/[^0-9A-Za-z\']+/', $line, -1,
PREG_SPLIT_NO_EMPTY);
foreach ($words as $w) {
if (!pspell_check($dict, $w)) {
if (!is_array($errors[$lineCount])) {
$errors[$lineCount] = array();
}
array_push($errors[$lineCount], $w);
}
}
$lineCount++;
}
// close file
fclose($fp);
// if errors exist
if (sizeof($errors) > 0) {
// print error list, with suggested alternatives
echo "The following words were wrongly spelt: \n";
foreach ($errors as $k => $v) {
echo "Line $k: \n";
foreach ($v as $word) {
$opts = pspell_suggest($dict, $word);
echo "\t$word (" . implode(', ', $opts) . ")\n";
}
}
}
?>