Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * SpellChecker
- * Checks a block of text for spelling mistakes
- * @parameter string $PS_TEXT: The text to check
- * @return array. The key will be the possible mis-spelt work the data an array
- * with the alternatives as the values.
- */
- function SpellChecker($PS_TEXT) {
- $LA_RETURN = array() ;
- // remove HTML tags from the text, there are guaranteed to be errors in that
- $pspell_config = pspell_config_create ("en");
- pspell_config_ignore($pspell_config, 3);
- pspell_config_mode($pspell_config, PSPELL_FAST);
- $pspell_link = pspell_new_config($pspell_config);
- // break the text into words, put the words as the basis for the return array
- $LA_ALL_WORDS = preg_split ("/[\s,.]+/", preg_replace(array('/[^a-z\-\'" ]/i', '/\-{1,}/'), array('', ' '), $PS_TEXT), -1, PREG_SPLIT_NO_EMPTY);
- $LA_ALL_WORDS = array_flip($LA_ALL_WORDS) ;
- // loop the word array
- foreach ( $LA_ALL_WORDS as $LS_WORD => $LV_DUMMY )
- {
- $LA_ALTERNATIVES = pspell_suggest($pspell_link, $LS_WORD) ;
- // if there are no alternatives
- if ( count($LA_ALTERNATIVES) == 0 || strtolower($LS_WORD) == strtolower($LA_ALTERNATIVES[0]) )
- {
- // remove the item from the array
- unset($LA_ALL_WORDS[$LS_WORD]) ;
- // otherwise
- } else
- {
- // add the items to the array
- $LA_ALL_WORDS[$LS_WORD] = array() ;
- // search the alternatives until 5 viable ones are found
- foreach ( $LA_ALTERNATIVES as $LS_ALTERNATIVE )
- {
- $LA_ALT_CHECK = pspell_suggest($pspell_link, $LS_ALTERNATIVE) ;
- if ( ! preg_match('/[ \-]/', $LS_ALTERNATIVE) && strtolower($LS_ALTERNATIVE) == $LA_ALT_CHECK[0])
- {
- $LA_ALL_WORDS[$LS_WORD][] = $LS_ALTERNATIVE ;
- }
- if ( count($LA_ALL_WORDS[$LS_WORD]) == 5 )
- {
- break ;
- }
- }
- // fi no alternatives
- }
- // wend the work array
- }
- // return the array
- return($LA_ALL_WORDS) ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement