Необходимо преобразовать документ HTML в читаемый, форматированный ASCII-текст.
Если доступны внешние программы, преобразующие HTML в ASCII, такие как lynx, то вызовите их, например так:
$file = escapeshellarg($file);
$ascii = `lynx-dump $file`;
Если внешняя программа форматирования недоступна, то функция pc_html2ascii(), показанная в примере 11.4, обрабатывает приемлемое подмножество HTML-элементов (без таблиц, фреймов и т. д.).
Пример 11.4. pc_html2ascii()
function pc_html2ascii($s) {
// конвертируем ссылки
$s = preg_replace('/<a\s+.*?href="?([^\" >]*)"?[^>]*>(.*?)<\/a>/i',
'$2 ($1)', $s);
// конвертируем <br>, <hr>, <p>, <div> в символы конца строки
$s = preg_replace('@<(b|h)r[^>]*>@i',"\n",$s);
$s = preg_replace('@<p[^>]*>@i',"\n\n",$s);
$s = preg_replace('@<div[^>]*>(.*)</div>@i',"\n".'$1'."\n",$s);
// конвертируем полужирный шрифт и курсив
$s = preg_replace('@<b[^>]*>(.*?)</b>@i','*$1*',$s);
$s = preg_replace('@<i[^>]*>(.*?)</i>@i','/$1/',$s);
// декодируем поименованные элементы
$s = strtr($s,array_flip(get_html_translation_table(HTML_ENTITIES)));
// декодируем нумерованные элементы
$s = preg_replace('//e','chr(\\1)',$s);
// удаляем все оставшиеся теги
$s = strip_tags($s);
return $s;
}