Eine auf WordPress spezialiserte Suchmaschine für Entwickler und Theme-Autoren



wp_text_diff ›

Seit2.6.0
Veraltetn/v
wp_text_diff ( $left_string, $right_string, $args = null )
Parameter: (3)
  • (string) $left_string "old" (left) version of string
    Erforderlich: Ja
  • (string) $right_string "new" (right) version of string
    Erforderlich: Ja
  • (string|array) $args { Associative array of options to pass to WP_Text_Diff_Renderer_Table(). @type string $title Titles the diff in a manner compatible with the output. Default empty. @type string $title_left Change the HTML to the left of the title. Default empty. @type string $title_right Change the HTML to the right of the title. Default empty. @type bool $show_split_view True for split view (two columns), false for un-split view (single column). Default true. }
    Erforderlich: Nein
    Standard: null
Nutzt:
  • Text_Diff
  • WP_Text_Diff_Renderer_Table
Siehe:
Gibt zurück:
  • (string) Empty string if strings are equivalent or HTML with differences.
Definiert in:
Codex:

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.


Quellcode

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;
	}
endif;