Login   Register  
PHP Classes
elePHPant
Icontem

File: test_diff.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Manuel Lemos  >  PHP Text Diff Highlight class  >  test_diff.php  >  Download  
File: test_diff.php
Role: Example script
Content type: text/plain
Description: Example page to show the difference between two texts
Class: PHP Text Diff Highlight class
Find and view the difference between text strings
Author: By
Last change: Added support to patch the text before and obtain the text after using only
the list of differences.
Added the Patch function to patch the string before to recreate the string
after.
Date: 8 months ago
Size: 2,169 bytes
 

Contents

Class file image Download
<?php
/*
 * test_diff.php
 *
 * @(#) $Id: test_diff.php,v 1.6 2014/01/30 04:07:41 mlemos Exp $
 *
 */
    
require('diff.php');
 
 
$before = IsSet($_POST['before']) ? $_POST['before'] : 'Some text before';
 
$after = IsSet($_POST['after']) ? $_POST['after'] : 'This is the text after';
 
$mode = (IsSet($_POST['mode']) ? $_POST['mode'] : 'w');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<title>Test the Diff Object</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<style type="text/css">
* { font-family: sans-serif,arial,helvetica }
.frameResults { border-style: solid; border-width: 1px; }
</style>
<body>
<form method="POST" action="?">
<div><label for="before">Before</label><br>
<textarea id="before" cols="80" rows="10" name="before"><?php echo HtmlSpecialChars($before); ?></textarea></div>
<div><label for="after">After</label><br>
<textarea id="after" cols="80" rows="10" name="after"><?php echo HtmlSpecialChars($after); ?></textarea></div>
<div><input type="submit" name="compare" value="Compare"> by <select name="mode">
<option value="c"<?php if($mode === 'c') echo ' selected'?>>Character</option>
<option value="w"<?php if($mode === 'w') echo ' selected'?>>Word</option>
<option value="l"<?php if($mode === 'l') echo ' selected'?>>Line</option>
</select></div>
<?php
    
if(IsSet($_POST['compare']))
    {
        
$diff = new diff_class;
        
$difference = new stdClass;
        
$difference->mode $mode;
        
$difference->patch true;
        
$after_patch = new stdClass;
        if(
$diff->FormatDiffAsHtml($before$after$difference)
        && 
$diff->Patch($before$difference->difference$after_patch))
        {
            echo 
'<div>Difference</div><div class="frameResults">'$difference->html'</div>';
            echo 
'<div>Patch</div><div class="frameResults">', ($after === $after_patch->after 'OK: The patched text matches the text after.' 'There is a BUG: The patched text (<b>'.HtmlSpecialChars($after_patch->after).'</b>) does not match the text after (<b>'.HtmlSpecialChars($after).'</b>).'), '</div>';
        }
        else
            echo 
'<div>Error: 'HtmlSpecialChars($diff->error), '</div>';
    }
?>
</form>
</body>
</html>