# -v- в этом разделе собраны теги HTML
мой ©tag, $em = 0;
в то время как ( s/(<.+?>)/$mark$em$mark/ ) {
$тег[$em++] - $1
}
# -v- существующая метазамена для остального контента
с/</</г;
с/>/>/г;
с/&/&амп;/г;
# -v- этот раздел восстанавливает неизмененные теги HTML
s/$mark(\d+)$mark/$tag[$1]/g ;
Благодаря этому вы можете свободно редактировать любую HTML-разметку в дополнение к использованию
обычные шаблоны вики-разметки.
Совет 6.34; Экранирование HTML для разбора вики
Если вы реализовали описанную ранее замену расширенных кодов, вы
должны быть осторожны, чтобы включить механизм выхода для блоков HTML, аналогичный
который используется для литеральных блоков.
Соответствующий код для экранирования перед расширенными заменами выглядит следующим образом:
$hmark = "\260";
# похож на другие маркеры, используемые в других местах
1
42
НАСТРОЙКА ВАШЕЙ ВИКИ
# -v- экранировать HTML-блоки
мой @tagLit, $tgb = 0 ; # здесь должны быть теги
в то время как ( s/(<html>(.*?)<\/html>)/$hmark$tgb$hmark/si
$tagLit[$tgb++] = $1
}
) {
# окружает буквальное экранирование и расширенные замены
# —v— заменить html-блоки перед сохранением
s/$hmark(\d+)$hmark/$tagLit[$1]/sg ;
И это все, кроме того факта, что вы и другие пользователи затем должны редактировать
все включения HTML вручную (или скопируйте в исходный код из других редакторов) и держитесь прямо
правильный синтаксис без посторонней помощи.
Проиллюстрированный метод подстановки фрагментов значительно упрощает работу по сравнению с
с некоторыми другими методами синтаксического анализа, которые могут прийти на ум для традиционного
программист.
Предупреждение для пользователей IE
Предоставление пользователям возможности редактировать необработанный HTML-код в форме браузера повышает удобство использования.
проблема, связанная с «функцией» в (некоторых версиях) Internet Explorer (IE). Явный
HTML-теги, введенные в форму, могут быть удалены, потому что там разрешен только «HTML-совместимый текст».
Пользователь IE, который редактирует исходный код HTML в форме и сталкивается с этой проблемой
когда страница сохранена то нужно редактировать "одним удалением". Например, набрав
и сохранение следующего может лишить выделенные жирным шрифтом теги:
Это <b>полужирный</b> текст.
Вместо этого введите эти версии разделителей тегов:
Это <b>жирный шрифт</b>
текст.
Другими словами, «исправленная» версия IE не удалит теги, если вы сначала экранируете
& < > с соответствующими объектами HTML & < > при редактировании. IE
возвращает эти объекты в вики правильно, как & < >, когда пользователь отправляет форму.