|
用PHP自动把纯文本转换成Web页面(2) $data = join('', $raw);
// replace special characters with HTML entities // replace line breaks with <br /> $html = nl2br(htmlspecialchars($data));
// replace multiple spaces with single spaces $html = preg_replace('/ss+/', ' ', $html);
// replace URLs with <a href...> elements $html = preg_replace('/s(w+://)(S+)/', ' <a href="" target="_blank"></a>', $html);
// start building output page // add page header $output =<<< HEADER <html> <head> <style> .slug {font-size: 15pt; font-weight: bold} .byline { font-style: italic } </style> </head> <body> HEADER;
// add page content $output .= "<div class='slug'>$slug</div>"; $output .= "<div class='byline'>By $byline</div><p />"; $output .= "<div>$html</div>";
// add page footer $output .=<<< FOOTER </body> </html> FOOTER;
// display in browser echo $output;
// AND/OR
// write output to a new .html file file_put_contents(basename($source, substr($source, strpos($source, '.'))) . ".html", $output) or die("Cannot write file"); ?>
第一步是把纯ASCII文件读取到一个PHP数组里。这通过file()函数很容易就可以完成,这个函数会把文件的每一行都转换成为一个用数字索引的数组中的元素。
然后,标题和作者行(我假设这两个都是文件的前两行)都通过array_shift()函数从数组里提取出来,放到单独的变量里。数组剩下的成员然后被连接成一个字符串。这个字符串现在就包括了整篇文章的正文。
文章正文里像“'”、“<”和“>”这样的特殊符号通过htmlspecialchars()函数被转换成相应的HTML符号。为了保留文章的原始格式,分行和分段通过nl2br()函数被转换成HTML的 元素。文章中间多个空格通过简单的字符串替换被压缩成为一个空格。
文章正文里的URL用正则表达式来检测,两边是元素。当页面在Web浏览器里显示的时候,它会把URL转换成为可点击的超链接。
然后用标准的HTML规则创建输出的HTML页面。文章的标题、作者和正文都用CSS技巧">CSS样式规则格式化。尽管这段脚本没有这样做,但是你可以在这个地方自定义最终页面的外观,你可以向模板添加图形元素、颜色或者其他眩目的内容。
|