1. Создайте в папке seophp/include новый файл с именем custom_markup.inc.php
и введите в него следующий код:
<?php
function custom_markup_translate($str)
{
// массив о регулярными выражениями, описывающими собственные дескрипторы
$ search = array (
•#\{bold}(.*?)\{/bold}#is-,
•#\{italic)(.*?)\{/italic}#is',
•#\{underline}(.*?)\{/underline}#is',
'#\{heading}(.*?)\{/heading}#is',
'#\{subheading}(.*?)\{/subheading}#is',
•#\{link: (.*?)} (.*?)\{/linJc}#is1 ,
•#\{elink:(.*?)}<.*?)\{/elink}#is',
•#\{unordered-list}(.*?)\{/unordered-list}\s*#is',
•#\{ordered-list}(.*?)\{/ordered-list}\s*#is',
'#\\s*{list-element}(.*?)\{/list-element}\s*#is',
•#\{picture: <.*?)}#is\
'#\t#\
'#\{comment} (.*?)\{/comment}#is'
);
// массив с HTML-заменами
$replace = array(
'\\1',
•\\l',
•\\l',
'\\1' ,
'\\1' ,
'\\2',
'\\21,
•
- \\1
',
•
- \\1
',
•
'' ,
' ' ,
' '
);
// выполнение замены
$step_l = preg_replace($search, $replace, $str);
$step_2 = preg_split('#(\{HTML\}.*?\{/HTML\})#is', $step_l, -1,
PREG_SPLIT_DELIM_CAPTORE);
$return = ' ' ;
foreach ($step_2 as $s2)
{
if (preg_match(' # \ {HTML\ } # ', $s2))
{
$return .= preg_replace(' # \ {/?HTML\} # is', ' ' , $s2) ;
}
else
{
$return .= nl2br($s2) ;
}
}
// возврат HTML-разметки
return $return;
>
?>
2. Создайте в папке seophp файл с именем markup.txt и введите в него следующий
код:
{HEADING} Генерация оптимизированного HTML с помощью собственного
языка разметки{/HEADING}Как уже было сказано, WYSIWYG-редакторы часто
приводят к проблемам, связанным с оптимизацией страниц. Зачастую
эти редакторы генерируют HTML без дескрипторов, которые адекватно
подчеркивают структурное значение элементов на странице. Поскольку
дескрипторы заголовков вроде hi, ul и strong придают документу структуру,
пренебрежение ими может {BOLD}{ITALIC}понизить{/ITALIC}{/BOLD}
ранг страницы, особенно если поисковый механизм учитывает факторы,
присутствующие на странице.
3. Создайте в папке seophp файл с именем test_markup. txt и введите в него следующий код:
npoвepкa транслятора в HTML-pa3MeTKy
<?php
// включение библиотеки собственной разметки
require_once 'include/customjnarkup.inc.php';
// задание имени входного файла
$file_name = 'markup.txt';
// открытие файла разметки на диске
$handle = fopen($file_name, 'г') ;
// проверка, успешно ли открыты файлы
if ($handle)
<
// чтение содержимого файла
$markup = fread($handle, filesize("markup.txt"));
// трансляция собственной разметки и вывод результата
$ translated = custom_markup_translate ($markup) ;
echo $translated;
)
else
{
// вывод сообщения об ошибке
echo "Невозможно открыть $file_name!";
}
?>
4. Откройте страницу http://seophp.example.com/test_markup.php— вы должны
получить результат, показанный на рис. 6.14.
может быть такая система при создании более сложной системы управления контентом.
Этот небольшой сценарий знает, как обрабатывать собственные дескрипторы
разметки с понятным назначением: {bold} (полужирный), {italic} (курсив),
{underline} (подчеркнуто), {heading} (заголовок), {subheading} (подзаголовок),
{link} (ссылка), {elink} (ссылка, открывающая новое окно), {unordered-list} (неупорядоченный список), {ordered-list} (упорядоченный список), {list-element}
(элементсписка), {picture} (изображение) и {comment} (комментарий).
Файл разметки markup.txt содержит не HTML-элементы, а лишь специальные
элементы разметки. Но с помощью простой (хотя и довольно объемной) библиотеки специальной разметки все элементы такой разметки заменяются на ходу на стандартные HTML-дескрипторы.
Функция custom_markup_translate () состоит в основном из ряда регулярных выражений и их замен, которые выполняют преобразование специального кода разметки в HTML. Мы оставляем вам разбор работы этой функции в качестве упражнения.