Form and Spelling Validation -
(Page 13 of 14 )
Now, by this point we have accepted the user input, found the misspelled words, and given the user a form by which they can correct the misspelled words. Now, it is time to apply the corrections that the user made. As seen by the action of the previous form, we will call this page spell2.php. The first thing we will do is to copy the data from the $_POST array into easier to use variables. As with the last posted data, we will check to see if magic quotes are enabled and handle the data appropriately.
<?php $corrections = array();
if (get_magic_quotes_gpc()) { $text = stripslashes ($_POST['original']); foreach($_POST['corrections'] as $key=>$value) { $corrections[$key] = stripslashes($value); } } else { $text = $_POST['original']; $corrections = $_POST['corrections']; } ?> |
We will split the original text with the same regular expression used in the beginning.
<?php $words = preg_split ("/[\s,.]+/", $text); ?> |
Now, we will loop through each correction that needs to be made and apply it. As we apply the corrections, we will surround the corrected word with HTML comments. This will enable us to ensure that we don't replace already replaced words.
<?php foreach($corrections as $key=>$correction) { $pattern = "/(\A|[^(\<!\-\-replaced\-\-\>)A-z])" . "{$words[$key]}(\Z|[^(\<!\-\-replaced\-\-\>)A-z])/"; $text = preg_replace($pattern, "\\1<!--replaced-->$correction<!--replaced-->\\2", $text, 1); } ?> |
At this point, all the corrections have been made and all this is left to do is display our result.
<?php echo nl2br($text); ?> |
An application such as this spell checker can be used in many different situations. If you are added news to your site, wouldn't it be great to spell check it before publishing? Users would be sure to appreciate spell checking of forum posts before they go live. You could incorporate this into the preview option on your forums. Just about anywhere, you accept text from the user, spell checking can be used.
Next: Summary >>
More Miscellaneous Articles
More By Matt Wade