wp_text_diff

Definition:
function wp_text_diff( $left_string, $right_string, $args = null ) {}

Displays a human readable HTML representation of the difference between two strings.
The Diff is available for getting the changes between versions. The output is HTML, so the primary use is for displaying the changes. If the two strings are equivalent, then an empty string will be returned.

Parameters

  • string $left_string: “old” (left) version of string
  • string $right_string: “new” (right) version of string
  • string|array $args: Optional. Change ‘title’, ‘title_left’, and ‘title_right’ defaults.

Return values

returns:Empty string if strings are equivalent or HTML with differences.

Source code

function wp_text_diff( $left_string, $right_string, $args = null ) {

	$defaults = array( 'title' => '', 'title_left' => '', 'title_right' => '' );

	$args = wp_parse_args( $args, $defaults );



	if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )

		require( ABSPATH . WPINC . '/wp-diff.php' );



	$left_string  = normalize_whitespace($left_string);

	$right_string = normalize_whitespace($right_string);



	$left_lines  = split("\n", $left_string);

	$right_lines = split("\n", $right_string);



	$text_diff = new Text_Diff($left_lines, $right_lines);

	$renderer  = new WP_Text_Diff_Renderer_Table();

	$diff = $renderer->render($text_diff);



	if ( !$diff )

		return '';



	$r  = "<table class='diff'>\n";

	$r .= "<col class='ltype' /><col class='content' /><col class='ltype' /><col class='content' />";



	if ( $args['title'] || $args['title_left'] || $args['title_right'] )

		$r .= "<thead>";

	if ( $args['title'] )

		$r .= "<tr class='diff-title'><th colspan='4'>$args[title]</th></tr>\n";

	if ( $args['title_left'] || $args['title_right'] ) {

		$r .= "<tr class='diff-sub-title'>\n";

		$r .= "\t<td></td><th>$args[title_left]</th>\n";

		$r .= "\t<td></td><th>$args[title_right]</th>\n";

		$r .= "</tr>\n";

	}

	if ( $args['title'] || $args['title_left'] || $args['title_right'] )

		$r .= "</thead>\n";



	$r .= "<tbody>\n$diff\n</tbody>\n";

	$r .= "</table>";



	return $r;

}

4163

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: