PHP Web Automation
Converting Plain Text to HTML
Problem
You want to turn plain text into reasonably formatted HTML.
Solution
First, encode entities with htmlentities(). Then, transform the text into various HTML structures.
Example pc_text2html()
function pc_text2html($s) {
$s = htmlentities($s);
$grafs = split("\n\n",$s);
for ($i = 0, $j = count($grafs); $i < $j; $i++) {
// Link to what seem to be http or ftp URLs
$grafs[$i] = preg_replace('/((ht|f)tp:\/\/[^\s&]+)/',
'<a href="$1">$1</a>',$grafs[$i]);
// Link to email addresses
$grafs[$i] = preg_replace('/[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}/i',
'<a href="mailto:$1">$1</a>',$grafs[$i]);
// Begin with a new paragraph
$grafs[$i] = '<p>'.$grafs[$i].'</p>';
}
return implode("\n\n",$grafs);
}
Discussion
The more you know about what the plain text looks like, the better your HTML conversion can be. For example, if emphasis is indicated with asterisks (*) or slashes (/) around words, you can add rules that take care of that.
Example More text-to-HTML rules
$grafs[$i] = preg_replace('/(\A|\s)\*([^*]+)\*(\s|\z)/',
'$1<b>$2</b>$3',$grafs[$i]);
$grafs[$i] = preg_replace('{(\A|\s)/([^/]+)/(\s|\z)}',
'$1<i>$2</i>$3',$grafs[$i]);
No comments:
Post a Comment