wp_text_diff

函数
wp_text_diff ( $left_string, $right_string, $args = null )
参数
  • (string) $left_string "old" (left) version of string.
    Required:
  • (string) $right_string "new" (right) version of string.
    Required:
  • (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. }
    Required:
    Default: null
返回值
  • (string) Empty string if strings are equivalent or HTML with differences.
相关
  • wp_parse_args()
定义位置
相关方法
wptexturizewp_style_ishuman_time_diffwp_set_lang_dirwp_get_sites
引入
2.6.0
弃用
-

wp_text_diff是一个比较两个文本字符串的函数,并返回一个代表它们之间差异的字符串,并标明增加和删除的内容。它用于显示一个文章或页面的不同修订版本。

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

Diff可用于获取版本之间的变化。输出是HTML,所以主要用于显示变化。如果两个字符串是相等的,那么将返回一个空字符串。

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

		$is_split_view       = ! empty( $args['show_split_view'] );
		$is_split_view_class = $is_split_view ? ' is-split-view' : '';

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

		if ( $args['title'] ) {
			$r .= "<caption class='diff-title'>$args[title]</caption>n";
		}

		if ( $args['title_left'] || $args['title_right'] ) {
			$r .= '<thead>';
		}

		if ( $args['title_left'] || $args['title_right'] ) {
			$th_or_td_left  = empty( $args['title_left'] ) ? 'td' : 'th';
			$th_or_td_right = empty( $args['title_right'] ) ? 'td' : 'th';

			$r .= "<tr class='diff-sub-title'>n";
			$r .= "t<$th_or_td_left>$args[title_left]</$th_or_td_left>n";
			if ( $is_split_view ) {
				$r .= "t<$th_or_td_right>$args[title_right]</$th_or_td_right>n";
			}
			$r .= "</tr>n";
		}

		if ( $args['title_left'] || $args['title_right'] ) {
			$r .= "</thead>n";
		}

		$r .= "<tbody>n$diffn</tbody>n";
		$r .= '</table>';

		return $r;
	}
endif;

常见问题

FAQs
查看更多 >