返回介绍

wp_text_diff()

发布于 2017-09-11 12:59:22 字数 5707 浏览 929 评论 0 收藏 0

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

Displays a human readable HTML representation of the difference between two strings.


description

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.

The arguments supported and can be changed are listed below.

‘title’ : Default is an empty string. Titles the diff in a manner compatible with the output. ‘title_left’ : Default is an empty string. Change the HTML to the left of the title. ‘title_right’ : Default is an empty string. Change the HTML to the right of the title.


参数

$left_string

(string) (Required) "old" (left) version of string

$right_string

(string) (Required) "new" (right) version of string

$args

(string|array) (Optional) Change 'title', 'title_left', and 'title_right' defaults.

Default value: null


返回值

(string) Empty string if strings are equivalent or HTML with differences.


源代码

File: wp-includes/pluggable.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$diff\n</tbody>\n";
	$r .= "</table>";

	return $r;
}

更新日志

Versiondescription
2.6.0Introduced.

相关函数

Uses

  • wp-includes/formatting.php: normalize_whitespace()
  • wp-includes/functions.php: wp_parse_args()
  • wp-includes/class-wp-text-diff-renderer-table.php: WP_Text_Diff_Renderer_Table::__construct()

Used By

  • wp-admin/includes/revision.php: wp_get_revision_ui_diff()

User Contributed Notes

  1. Skip to note content You must log in to vote on the helpfulness of this noteVote results for this note: 0You must log in to vote on the helpfulness of this note Contributed by Codex

    Example

    
    $left_string = 'This is the original string';
    
    $right_string = 'This is the revised string';
    
    $args = array(
    	'title'       => 'Differences',
    	'title_left'  => 'Old Version',
    	'title_right' => 'New Version'
    );
    
    $diff_table = wp_text_diff( $left_string,$right_string, $args );
    
    echo $diff_table;
    

    This will output the following html:

    
    <table class="diff">
    	<colgroup>
    		<col class="ltype">
    		<col class="content">
    		<col class="ltype">
    		<col class="content">
    	</colgroup>
    	<thead>
    		<tr class="diff-title">
    			<th colspan="4">Differences</th>
    		</tr>
    		<tr class="diff-sub-title">
    			<td></td>
    			<th>Old Version</th>
    			<td></td>
    			<th>New version</th>
    		</tr>
    	</thead>
    	<tbody>
    		<tr>
    			<td>-</td>
    			<td class="diff-deletedline">
    				This is the <del>original</del> string
    			</td>
    			<td>+</td>
    			<td class="diff-addedline">
    				This is the <ins>revised</ins> string
    			</td>
    		</tr>
    
    	</tbody>
    </table>
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文