Преобразование ASCII в HTML

Задача
Необходимо преобразовать простой текст в корректно отформатированный документ HTML.

Решение
Во-первых, закодируйте элементы с помощью функции htmlentities(), затем преобразуйте текст в различные HTML-структуры. Функция pc_ascii2html(), показанная в примере 11.3, выполняет основные преобразования для ссылок и символов конца абзаца.

Пример 11.3. pc_ascii2html()
function pc_ascii2html($s) {
$s = htmlentities($s);
$grafs = split("\n\n",$s);
for ($i = 0, $j = count($grafs); $i < $j; $i++) {
// Ссылка на то, что выглядит как http или ftp URL
$grafs[$i] = preg_replace('/((ht|f)tp:\/\/[^\s&]+)/',
'$1',$grafs[$i]);
// Ссылка на почтовые адреса
$grafs[$i] = preg_replace('/[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}/i',
'$1',$grafs[$i]);
// Начало нового абзаца
$grafs[$i] = '

'.$grafs[$i].'

';
}
return join("\n\n",$grafs);
}

Обсуждение
Чем больше вы знаете о строении ASCII-текста, тем лучше может быть HTML-преобразование. Например, если выделение обозначается звездочками (*asterisks*) или символами косой черты (/slashes/) вокруг слова, то можно добавить правила, реализующие это следующим образом:

$grafs[$i] = preg_replace('/(\A|\s)\*([^*]+)\*(\s|\z)/',
'$1$2$3',$grafs[$i]);$grafs[$i] = preg_replace('{(\A|\s)/([^/]+)/(\s|\z)}',
'$1$2$3',$grafs[$i]);

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ файла протокола веб-сервера
Выделение информации на веб-странице
Извлечение содержимого URL с помощью метода POST
Извлечение ссылок из HTML-файла
Использование шаблонов системы Smarty

Вернуться в раздел: PHP / 11. Автоматизация работы с Web