On this page
wp_text_diff( string $left_string, string $right_string, string|array $args = null ): string
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.
See also
- wp_parse_args() : Used to change defaults to user defined settings.
Parameters
$left_stringstring Required-
"old" (left) version of string.
$right_stringstring Required-
"new" (right) version of string.
$argsstring|array Optional-
Associative array of options to pass to WP_Text_Diff_Renderer_Table().
titlestringTitles the diff in a manner compatible with the output. Default empty.title_leftstringChange the HTML to the left of the title.
Default empty.title_rightstringChange the HTML to the right of the title.
Default empty.show_split_viewboolTrue for split view (two columns), false for un-split view (single column). Default true.
Default:
null
Return
string Empty string if strings are equivalent or HTML with differences.
Source
File: wp-includes/pluggable.php. View all references
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$diff\n</tbody>\n";
$r .= '</table>';
return $r;
}
Related
Uses
| Uses | Description |
|---|---|
| normalize_whitespace() wp-includes/formatting.php | Normalizes EOL characters and strips duplicate whitespace. |
| WP_Text_Diff_Renderer_Table::__construct() wp-includes/class-wp-text-diff-renderer-table.php | Constructor – Call parent constructor with params array. |
| wp_parse_args() wp-includes/functions.php | Merges user defined arguments into defaults array. |
Used By
| Used By | Description |
|---|---|
| wp_get_revision_ui_diff() wp-admin/includes/revision.php | Get the revision UI diff. |
Changelog
| Version | Description |
|---|---|
| 2.6.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wp_text_diff