显示两个字符串之间差异的人类可读HTML表示。

原型

wp_text_diff( string $left_string, string $right_string, string|array $args = null )

描述

Diff可用于获取版本之间的更改。输出是HTML,因此主要用于显示更改。如果两个字符串是等效的,则返回一个空字符串。

参考:

  • wp_parse_args()

参数

$left_string (string) (Required) 字符串的“旧”(左)版本

$right_string (string) (Required) 字符串的“新”(右)版本

$args (string|array) (Optional)  更改’title’,‘title_left’和’title_right’默认值。

返回值

(string)  如果字符串是等效的,则为空字符串;

源文件

路径:wp-includes/pluggable.php

<?php
...
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', 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$diffn</tbody>n";
	$r .= "</table>";
	return $r;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_text_diff/