В чем ключевое отличие HTML 4 от HTML 5?

<?php
function xss_clean($data)
{
// Fix &entity\n;
$data = str_replace(array('&amp;','&lt;','&gt;'), array('&amp;amp;','&amp;lt;','&amp;gt;'), $data);
$data = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '$1;', $data);
$data = preg_replace('/(&#x*[0-9A-F]+);*/iu', '$1;', $data);
$data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');

// Remove any attribute starting with "on" or xmlns
$data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);

// Remove javascript: and vbscript: protocols
$data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data);
$data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data);
$data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data);

// Only works in IE: <span style="width: expression(alert('Ping!'));"></span>
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data);

// Remove namespaced elements (we do not need them)
$data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data);

do
{
    // Remove really unwanted tags
    $old_data = $data;
    $data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);
}
while ($old_data !== $data);

// we are done...
return $data;
}
142
задан deepwell 30 June 2009 в 03:26
поделиться

5 ответов

HTML5 имеет несколько целей, которые дифференцируют его от HTML4.

Непротиворечивость в Обработке Уродливых Документов

основной - последовательная, определенная обработка ошибок . Как Вы знаете, HTML намеренно поддерживает 'суп тега' или способность написать уродливый код, и исправьте его в действительный документ. Проблема состоит в том, что правила для того, чтобы сделать это не записаны нигде. Когда новый поставщик браузера хочет выйти на рынок, они просто должны протестировать уродливые документы в различных браузерах (особенно IE) и перепроектировать их обработку ошибок. Если они не сделают, то много страниц не отобразятся правильно (оценки помещают примерно 90% страниц в сети, как являющейся по крайней мере несколько уродливым).

Так, HTML5 пытается обнаружить и шифровать эту обработку ошибок, так, чтобы разработчики браузера могли все стандартизировать и значительно уменьшить время и деньги, требуемые последовательно отображать вещи. Также, долго в будущем после того, как HTML умирал как формат документа, историки могут все еще хотеть прочитать наши документы, и наличие полностью определенного алгоритма парсинга значительно поможет этому.

Лучшее веб-приложение Функции

вторичная цель HTML5 состоит в том, чтобы разработать способность браузера быть платформой приложений, через HTML, CSS и JavaScript. Много элементов были добавлены непосредственно к языку, которые в настоящее время являются (в HTML4) Flash или основанными на JS взломами, такой как <canvas>, <video>, и <audio>. Полезные вещи, такие как Локальное устройство хранения данных (js-accessible browser-built-in база данных значения ключа, для того, чтобы хранить информацию вне того, что могут содержать cookie), новые входные типы, такие как дата, для которой браузер может выставить легкий пользовательский интерфейс (так, чтобы мы не использовали наши находящиеся в js календарные средства выбора даты), и поддерживаемая браузером проверка формы сделают веб-приложения разработки намного более простыми для разработчиков и сделают их намного быстрее для пользователей (так как много вещей будут поддерживаться исходно, а не взламываться на пути JavaScript).

Улучшенная Семантика Элемента

существует много других меньших усилий, происходящих в HTML5, таких как лучше определенные семантические роли для существующих элементов (<strong> и <em> теперь на самом деле средний, что-то другое, и даже <b> и <i> имеет неопределенную семантику, которая должна работать хорошо при парсинге документов прежней версии), и добавляя, что новые элементы с полезной семантикой - <article>, <section>, <header>, <aside>, и <nav> должны заменить большинство [1 112] с, используемая на веб-странице, делая страницы более семантическими, но что еще более важно, легче читать . Никакое более болезненное сканирование для наблюдения, что это случайное </div> закрывает - вместо этого, у Вас будет очевидное </header>, или </article>, делая структуру Вашего документа намного более интуитивной.

194
ответ дан Joel Spolsky 30 June 2009 в 03:26
поделиться

От Википедия :

  • Новые правила парсинга, ориентированные к гибкому парсингу и совместимости
  • Новые элементы †“раздел, видео, прогресс, военно-морской, метр, время, в стороне, холст
  • , Новый вход приписывает †“даты и время, электронная почта, url
  • Новые атрибуты †“ping, набор символов, асинхронный
  • Глобальные атрибуты (который может быть применен для каждого элемента), †“идентификатор, tabindex, повторитесь
  • элементы, Устаревшие отбросили †“центр, шрифт, ударьте
43
ответ дан Christian Davén 30 June 2009 в 03:26
поделиться

Вы захотите проверить Различия HTML5 от HTML4: Примечание Рабочей группы W3C 9 декабря 2014 для полных различий. Существует много новых элементов и атрибутов элемента. Некоторые элементы были удалены, и у других есть различное семантическое значение, чем прежде.

существуют также определенные API, такие как использование холста, чтобы помочь создать следующее поколение веб-приложений и удостовериться, что реализации стандартизированы.

12
ответ дан Richard Chambers 30 June 2009 в 03:26
поделиться

HTML 5 приглашает Вас, дают, добавляет много семантического значения к Вашему коду. Кроме того, существует собственное решение встроить мультимедийный контент.

Остальное важно, но это - больше технического сахара, который сохранит Вас от выполнения того же материала с клиентским языком программирования.

0
ответ дан e-satis 30 June 2009 в 03:26
поделиться

Вам может быть интересен этот список элементов и атрибутов HTML5 .

Также обратите внимание, что это «HTML 4», а не «HTML4». Действительно, для HTML 5 используются оба варианта, но есть важное различие в значении. HTML 5 относится к имени спецификации W3C, тогда как «HTML5» - это тип документа тех файлов HTML с типом MIME text / html , которые следуют этой спецификации. То же самое касается XHTML 5 против XHTML5.

3
ответ дан 23 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: