wp_text_diff

The timeline below displays how wordpress function wp_text_diff has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * 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.
 *
 * @since 2.6.0
 *
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string       $left_string  "old" (left) version of string.
 * @param string       $right_string "new" (right) version of string.
 * @param 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.
 * }
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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;
}

WordPress Version: 5.7

/**
 * 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.
 *
 * @since 2.6.0
 *
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string       $left_string  "old" (left) version of string
 * @param string       $right_string "new" (right) version of string
 * @param 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.
 * }
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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;
}

WordPress Version: 5.3

/**
 * 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.
 *
 * @since 2.6.0
 *
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string       $left_string  "old" (left) version of string
 * @param string       $right_string "new" (right) version of string
 * @param 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.
 * }
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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;
}

WordPress Version: 5.1

/**
 * 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.
 *
 * 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.
 *
 * @since 2.6.0
 *
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string       $left_string  "old" (left) version of string
 * @param string       $right_string "new" (right) version of string
 * @param string|array $args         Optional. Change 'title', 'title_left', and 'title_right' defaults.
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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;
}

WordPress Version: 4.4

/**
 * 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.
 *
 * 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.
 *
 * @since 2.6.0
 *
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string       $left_string  "old" (left) version of string
 * @param string       $right_string "new" (right) version of string
 * @param string|array $args         Optional. Change 'title', 'title_left', and 'title_right' defaults.
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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;
}

WordPress Version: 4.3

/**
 * 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.
 *
 * 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.
 *
 * @since 2.6.0
 *
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string       $left_string  "old" (left) version of string
 * @param string       $right_string "new" (right) version of string
 * @param string|array $args         Optional. Change 'title', 'title_left', and 'title_right' defaults.
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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')) {
        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;
}

WordPress Version: 3.9

/**
 * 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.
 *
 * 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.
 *
 * @since 2.6.0
 *
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string $left_string "old" (left) version of string
 * @param string $right_string "new" (right) version of string
 * @param string|array $args Optional. Change 'title', 'title_left', and 'title_right' defaults.
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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')) {
        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;
}

WordPress Version: 3.7

/**
 * 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.
 *
 * 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.
 *
 * @since 2.6
 * @see wp_parse_args() Used to change defaults to user defined settings.
 * @uses Text_Diff
 * @uses WP_Text_Diff_Renderer_Table
 *
 * @param string $left_string "old" (left) version of string
 * @param string $right_string "new" (right) version of string
 * @param string|array $args Optional. Change 'title', 'title_left', and 'title_right' defaults.
 * @return string Empty string if strings are equivalent or HTML with differences.
 */
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')) {
        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;
}