#!/usr/bin/php <?php // reads all files in the current directory that have // the ending .php and creates corresponding HTML // files that with the ending .html // mysql_connect has password stripped for security // reasons $top='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us"> <head><title></title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> </head><body><div><pre>'; $bottom='</pre></div><p> <a href="http://validator.w3.org/check?uri=referer"><img style="border: 0pt" src="/valid-xhtml10.png" alt="Valid XHTML 1.0!" height="31" width="88" /></a> </p></body></html>'; function document_file($file) { $php=file_get_contents($file); // ouch! php seems to use iso-8859-1 internally $php=utf8_decode($php); $top=$GLOBALS['top']; $bottom=$GLOBALS['bottom']; // make entities. the standard htmlentities($php) makes entities // for non-ascii chars, I did not like that. The order in the // substitutions does matter. $r=array('-&-','-<-','->-',); $s=array('&','<','>',); $php=preg_replace($r,$s,$php); // remove password in mysql_connect $r="/mysql_connect\( *('[^']+') *, *('[^']+') *, *('[^']+') *\)/"; $s="mysql_connect($1,$2,'')"; $php=preg_replace($r,$s,$php); // remove password in mysqli_connect $r="/mysqli_connect\( *('[^']+') *, *('[^']+') *, *('[^']+') *\)/"; $s="mysqli_connect($1,$2,'')"; $php=preg_replace($r,$s,$php); // add a proper <title> $r="-<title></title>-"; $s="<title>documentation for script $file</title>"; $top=preg_replace($r,$s,$top); // final composition $doc="$top\n$php\n$bottom\n"; $doc=utf8_encode($doc); $out_file="$file.html"; $fp=fopen($out_file,'w'); fwrite($fp,$doc); } // do not run on the web if(isset($_SERVER["SERVER_NAME"])) { print $top."</pre><div>This script is not effective on the web."; print "</div><pre>".$bottom; exit; } $dir=opendir("."); while ($file = readdir($dir)) { if(preg_match('/.php$/',$file) or preg_match('/.js$/',$file) ) { document_file($file); } } ?>