воскресенье, 22 января 2012 г.

PHP::Tidy. Исправление и автодополнение HTML тегов



Tidy является очень удобной утилитой для чистки и исправления HTML кода. Также нельзя упустить то, что, с помощью Tidy можно очень легко перемещаться по HTML дереву.

Установка (только php5 и выше)
Windows
Если вы используете PHP5 на Windows, все что вам нужно, это раскомментировать расширение Tidy находящееся в строке extension=php_tidy.dll файла php.ini. Официальный win32 бинарный дистрибутив уже включает поддержку Tidy.
Debian Linux
Если вы используете PHP5 на Debian Linux, все что вам нужно для включения расширения Tidy это запустить следующую команду в консоли: 
~ # apt-get install php5-tidy


Пример:
Если существует ситуация когда нам нужно восстановить плохой HTML код или мы сомневаемся что пользователь корректно введет свой HTML код в указанное нами поле, тогда мы всегда можем подстраховать себя с помощью Tidy.
Это очень просто! вот пример плохого HTML кода:
  1. $html = "<html>
  2.       <head>
  3.       <title>текст</title>
  4.       </head>
  5.       <body>
  6.  <p> плохой код <br> второй плохой код </i>
  7.       </body>
  8.     </html>";
Для того чтобы исправить это, нужно лишь исполнить следующее:
  1. $config = array'indent'         => true,
  2.             'output-xhtml'   => true,
  3.             'wrap'           => 200);
  4. $Tidy = new tidy();
  5. $Tidy->parseString($html, $config, 'utf8');
  6. $Tidy->cleanRepair();
  7. echo "<pre>" . htmlspecialchars($Tidy) . "</pre>";
Вы просто создаете небольшую переменную с конфигурацией Tidy где указываете настройки переноса строки, выходной формат и отступы (wrapper, output standart and indent). Потом вы создаете новый Tidy объект, потом с помощь Tidy  метода парсите ваш плохой HTML код с заданной кодировкой и в конце используете метод Tidy::cleanRepair(), который полечит весь HTML. Ниже представлены результаты:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.   <head>
  5.     <title>
  6.       текст
  7.     </title>
  8.   </head>
  9.   <body>
  10.     <p>
  11.       плохой код<br />
  12.       второй плохой код
  13.     </p>
  14.   </body>
  15. </html>
Мы видим что тег </i> был удален, тег <br /> был изменен, тег <p> был корректно закрыт и также был добавлен DOCTYPE тег. И теперь наша страница выглядит более привлекательно.

Всю документация о Tidy вы можете найти на сайте  php.net в Tidy section.