Scott, I'm sending the word Array to PHP for checking. PHP will check each word until it finds an incorrect word, then it will send the wrong word back, along with 10 suggestions. I'm not that good at PHP, so I hired someone to do this for me. We've worked out a fairly comprehensive logorithm that I'm quite pleased with the suggested words it returns.
I'm still working on the Flex part, but how I envision this is that Flex gets the wrong word back, searches for it and highlights/underlines it. The user is presented with a list of words they can replace it with, or they can type in a new word (there are some good examples of similar stuff in the Flex Builder Help/Flex 2 Developer's Guide: "Selecting and modifying text" and "Programming RichTextEditor Subcontrols"). "Programming RichTextEditor Subcontrols" has a section near the end that has a find/replace Application that uses a RichTextEditor with a TitleWindow popup. Anyway, after correcting or adding the "wrong" word, I re-send the word Array to PHP for checking. Since I'll allow them to modify the text during the spell checking process, I resend the whole array until there are no incorrect words. Still thinking about how to give them the option to ignore words, without adding to their custom dictionary, so the spell check doesn't get caught in a loop of returning a word that the user says is correct, but they don't want to add.