PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!
<?php
// Copyright (C) 2012 Jacob Barkdull
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Display source code
if (basename($_SERVER["PHP_SELF"]) == basename(__FILE__) && isset($_GET["source"])) {
header("Content-type: text/plain");
exit(file_get_contents(basename($_SERVER["PHP_SELF"])));
}
// HTML Table
echo '<table width="100%">' . "\n<tbody>\n<tr>\n";
echo '<td valign="top">' . "\nCurrent Version:<hr>\n<pre>\n";
// Replace '<' and '>' Characters
function replace($input) {
return str_replace(array('<', '>'), array('<', '>'), $input);
}
// Line Arrays
$cv = explode("\n", replace(file_get_contents('testdoc.txt'))); // Current Version
$ov = explode("\n", replace(file_get_contents('testdoc_old.txt'))); // Old Version
// Count Lines - Set to Longer Version
$lc = (count($cv) > count($ov)) ? count($cv) : count($ov);
// Fix Mismatched Line Counts
for ($flc = count($ov); $flc != $lc; $flc++) {
$ov["$flc"] = '';
}
for ($l = '0'; $l != $lc; $l++) {
// Word Arrays
$cw = explode(' ', $cv["$l"]); // Current Version
$ow = explode(' ', $ov["$l"]); // Old Version
// Count Words - Set to Longer Version
$wc = (count($cw) > count($ow)) ? count($cw) : count($ow);
// Fix Mismatched Word Counts
for ($fwc = count($ow); $fwc != $wc; $fwc++) {
$ow["$fwc"] = '';
}
// If each line is identical, just echo the normal line. If not,
// check if each word is identical. If not, wrap colored "<b>"
// tags around the mismatched words.
if ($cv["$l"] !== $ov["$l"]) {
for ($w = '0'; $w != $wc; $w++) {
if ($cw["$w"] === $ow["$w"]) {
echo $cw["$w"];
echo ($w != ($wc - 1)) ? ' ' : "\n";
} else {
echo '<b style="color: #00BB00;">' . $cw["$w"];
echo ($w != ($wc - 1)) ? '</b> ' : "</b>\n";
}
}
} else {
echo $cv["$l"] . "\n";
}
}
// Ending HTML Tags
echo "</pre>\n</td>\n<td> </td>\n";
echo '<td valign="top">' . "\nOld Version:<hr>\n<pre>\n";
// Read and Display Old Version
echo replace(file_get_contents('testdoc_old.txt')) . "\n";
echo "</pre>\n</td>\n</tr>\n</tbody>\n</table>";
?>