Я видел юмористические темы и читал предупреждения, и я знаю, что вы не анализируете HTML с помощью регулярных выражений . Не волнуйтесь ... Я не планирую пробовать это .
НО ... это заставляет меня задаться вопросом: как кодируются парсеры HTML (включая встроенные функции языков программирования , как парсеры DOM и PHP ' s strip_tags)? Какой механизм они используют для синтаксического анализа (иногда искаженной) разметки?
Я нашел исходный код из , кодированный на JavaScript , и он фактически использует регулярное выражение для выполнения работы:
// Regular Expressions for parsing tags and attributes
var startTag = /^<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,
endTag = /^<\/(\w+)[^>]*>/,
attr = /(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
Все ли они это делают? Существует ли обычный стандартный способ кодирования парсера HTML?