Однако другой, более мощный метод заключается в удалении всех экранированных разделов перед

синтаксический анализ и подстановка, а затем восстанавливать их перед отправкой содержимого страницы на

шаблон. Что мы делаем, так это заменяем найденные вхождения шаблона в переменной

со специальным маркером (предопределенным как $lmark = "\262", отличным от URL

маркер, используемый позже) и следите за порядком, в котором текстовые фрагменты были

найденный. Соответствующие части:

локальное $тело; # использовать для построения замененного текста

&EscapeMetaCharacters; # (< > &) делается перед литеральными заменами

мой ©blkLit, $blk = 0 ;

# -v- теги удалены, не нужны для последующего рендеринга

в то время как ( s/\[($sic)\](.*?)\[\/\1\]/$lmark$blk$lmark/si ) {

$blkLit[$blk++] = $2


1

42

НАСТРОЙКА ВАШЕЙ ВИКИ

}

# foreach построчно

# нормальный разбор, построчно

# конец построчного цикла

# -v- восстановить любые литеральные блоки

$body =~ s/$lmark(\d+)$lmark/<pre>$blkLit[$l]<\/prexp>/sg ;

# -v- страница готова

напечатать $тело; # вывести всю заменяемую страницу

# конец подпрограммы

Когда приходит время восстанавливать, мы ищем шаблоны пронумерованных маркеров и

заменить обратно соответствующие текстовые клипы. Добавление «s» к заменам

позволяет экранированным блокам занимать несколько строк. Эта конструкция снова встречается в

следующий раздел, посвященный заменам (и экранированным разделам) при сохранении страницы.

Расширенные коды замены

Под кодами замены мы подразумеваем подстановку текста, аналогичную расширениям формата

показано ранее. Отличие в том, что замена происходит до сохранения редактируемого

страницу, а не на лету при ее обслуживании. Это означает, что это одноразовый, постоянный

изменить исходный текст.

Совет 6.16: Преимущество замен ρresave

С точки зрения администрирования базы данных изменение такого рода замены

Соглашение легче обрабатывать, чем предыдущий вид. Коды замены

заменяется сразу же при сохранении редактируемой страницы и поэтому не

оставаться в исходном коде страницы как потенциальная устаревшая проблема.

Для QuickiWiki вставьте предложенные строки кода формата в предварительное сохранение.

список замен показан в сохранении. cgi, описанный в главе 7, в разделе