WordPress at a glance

wp_text_diff() WP 1.0

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.

Возвращает

String. Empty string if strings are equivalent or HTML with differences.

Использование

wp_text_diff( $left_string, $right_string, $args );
$left_string(string) (required)
"old" (left) version of string
$right_string(string) (required)
"new" (right) version of string
$args(string/array)

Associative array of options to pass to WP_Text_Diff_Renderer_Table().

  • title(string)
    Titles the diff in a manner compatible with the output.
    Default: ''

  • title_left(string)
    Change the HTML to the left of the title.
    Default: ''

  • title_right(string)
    Change the HTML to the right of the title.
    Default: ''

  • show_split_view(true/false)
    True for split view (two columns), false for un-split view (single column).
    Default: true

Default: null

Заметки

  • See: wp_parse_args() Used to change defaults to user defined settings.

Changelog

Since 2.6.0 Introduced.

Код wp_text_diff() WP 5.5.1

<?php
function wp_text_diff( $left_string, $right_string, $args = null ) {
	$defaults = array(
		'title'           => '',
		'title_left'      => '',
		'title_right'     => '',
		'show_split_view' => true,
	);
	$args     = wp_parse_args( $args, $defaults );

	if ( ! class_exists( 'WP_Text_Diff_Renderer_Table', false ) ) {
		require ABSPATH . WPINC . '/wp-diff.php';
	}

	$left_string  = normalize_whitespace( $left_string );
	$right_string = normalize_whitespace( $right_string );

	$left_lines  = explode( "\n", $left_string );
	$right_lines = explode( "\n", $right_string );
	$text_diff   = new Text_Diff( $left_lines, $right_lines );
	$renderer    = new WP_Text_Diff_Renderer_Table( $args );
	$diff        = $renderer->render( $text_diff );

	if ( ! $diff ) {
		return '';
	}

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

	if ( ! empty( $args['show_split_view'] ) ) {
		$r .= "<col class='content diffsplit left' /><col class='content diffsplit middle' /><col class='content diffsplit right' />";
	} else {
		$r .= "<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;
}

From tag: post revisions

No comments
    Log In . Register