• Проверка орфографии с помощью Google

      Иногда в проекте требуется проверить данные на предмет орфографических ошибок, не полагаясь на познания пользователя по части языков. Тут нам сможет помочь компания 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
    • Дата в копирайтах

        Обратил внимание на то, что уже 23 дня, как длиться 2009 год, а на многих сайтах копирайты имеют вид "© 2006—2008", и это в лучшем случае.

        Почему бы вместо конечного года не вставить такой вот код:
        &сopy; 2006—<?= date("Y"); ?>
        Опубликовано на правах «Мысли вслух» =)

        upd: Более удобный, как мне кажется, вариант предложил youROCK:
        &сopy; 2009<?=(date('Y') != 2009 ? '—' . date('Y') : '')?>
      • Пример доски объявлений на Kohana


          Kohana — довольно молодой PHP фреймворк, форк CI, всецело завязанный на ООП. К достоинствам Kohana можно отнести использование всех возможностей PHP5 на 100%, высокую скорость работы, «легковесность» и простоту как использования, так и изучения. Из минусов отчетливо выделяется небольшое комьюнити, как следствие, не шибко качественная документация и небольшое количество модулей и библиотек.

          Не так давно своё знакомство с фреймворками я начинал именно с Kohana и, надо сказать, я был удивлен, насколько легко он мне поддался. Думал будет намного сложнее. Но очень сказывалась нехватка документации и примеров кода. Зарывшись в маны и разбор исходников, через некоторое время, я восполнил интересующие меня пробелы относительно Kohana, и поэтому решил написать эту статью, дабы другим хабралюдям, оказавшимся в схожей ситуации не пришлось по ночам не досыпать и лечить головные боли.

          Под катом пример доски объявлений, написанный с помощью Kohana, возможно местами он не претендует на рациональность и здравый смысл, но всё-же я надеюсь услышать конструктивную критику.

          Статья рассчитана на людей, имеющих понятие об MVC и ООП, но не имевших, либо мало имевших, дело с фреймворками.

          Итак, приступим...