Иногда в проекте требуется проверить данные на предмет орфографических ошибок, не полагаясь на познания пользователя по части языков. Тут нам сможет помочь компания
Google, с таким их сервисом, как проверка орфографии, используемым в Google Toolbar. Но, к сожалению, Google не предоставляет открытого API для работы с ним.
Итак, краткое описание:
Для того, чтобы проверить текст нам нужно отослать его в POST на
https://google.com/tbproxy/spell?lang=ru, где для смены языка следует заменить значение параметра
lang на соответствующий по
ISO 3166-1 alpha-2. Текст оформляется в XML вида:
<?xml version="1.0" encoding="UTF-8" ?><br/>
<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><br/>
<text>Текст для проверки</text><br/>
</spellrequest>
ignoredups — подсветка повторов
ignoredigits — считать цифры ошибками
ignoreallcaps — не проверять слова написанные капсом (подсказал
pointum)
Если всё успешно, мы получаем ответ вида
<?xml version="1.0" encoding="UTF-8"?><br><spellresult error="0" clipped="0" charschecked="272"><br> <c o="27" l="13" s="0"></c><br> <c o="73" l="11" s="1">орфографии и орфографии</c><br> <c o="190" l="11" s="1">пользоваться</c><br> <c o="226" l="13" s="0">пред оставляет пред-оставляет</c><br></spellresult>
Атрибуты тега
spellresult:
error — произошла ли ошибка
charschecked — количество проверенных символов
В нем идет перечисление допущенных ошибок (теги
c), их параметры:
o — начало исходного слова в тексте
l — длина этого слова
s — точность результата
В самом теге
c содержатся предполагаемые варианты написания слов,
разделенные символом \t.
P.S. Когда этот текст уже был написан, случайно наткнулся на
статью в
блоге Paul Welter, которая, в принципе, описывает тоже самое…
UPD: Пользователь
wayly написал на PHP класс для проверки текста с помощью этого сервиса, скачать можно по ссылке
proxysoft.ru/files/spellchecker.zip (
зеркало).
UPD2: mezhevikin подсказал ajax-решение с использованием этого сервиса —
orangoo.com/labs/?page_id=3
UPD3: Список поддерживаемых языков
_________
Текст подготовлен в
ХабраРедакторе
Код подсвечен в
Source Code Highlighter