WordPress как на ладони
wordpress jino

wp_text_diff() WP 2.6.0

Получает удобную для чтения HTML-таблицу с различиями между двумя переданными строками (текстами).

Если между строками нет различий, то wp_text_diff() вернет пустую строку. Возвращаемая таблица состоит из двух колонок: слева первый текст, справа второй. Удаленные и вставленные данные помечены тегами <del> и <ins>.

Так как wp_text_diff() возвращает HTML, функция в первую очередь используется для визуального отображения различий между старым и новым текстом.

Работает на основе классов: Text_Diff и WP_Text_Diff_Renderer_Table.

Хуков нет.

Возвращает

Cтроку: HTML код таблицы, если в строках есть разница. Если разницы нет, вернет пустую строку.

Использование

wp_text_diff( $left_string, $right_string, $args );
$left_string(cтрока) (обязательный)
"Старый текст" (будет слева).
$right_string(cтрока) (обязательный)
"Новый текст" (будет справа).
$args(cтрока/массив)

Аргументы функции. Можно установить заголовки в таблице:
title - заголовок общей таблицы. По умолчанию - пусто.
title_left - заголовок левой колонки таблицы. По умолчанию - пусто.
title_right - заголовок правой колонки таблицы. По умолчанию - пусто.

По умолчанию: null

Примеры

#1 Демонстрация сравнивания текстов
$string = 'Старый текст нечто';
$string2 = 'Новый текст нечто.';

$args = array(
	'title'       => 'Различия',
	'title_left'  => 'Старый',
	'title_right' => 'Новый',
);

$diff = wp_text_diff( $string , $string2, $args );
echo $diff;

Этот код выведет следующее:

<table class="diff">
   <colgroup>
	  <col class="content">
   </colgroup>
   <thead>
	  <tr class="diff-title">
		 <th colspan="4">Различия</th>
	  </tr>
	  <tr class="diff-sub-title">
		 <td></td>
		 <th>Старый</th>
		 <td></td>
		 <th>Новый</th>
	  </tr>
   </thead>
   <tbody>
	  <tr>
		 <td class="diff-deletedline"><del>Старый</del> текст нечто</td>
		 <td> </td>
		 <td class="diff-addedline"><ins>Новый</ins> текст нечто<ins>.</ins></td>
	  </tr>
   </tbody>
</table>

А выглядит так (зависит от css стилей вашей темы):

Различия
Старый Новый
Старый текст нечто Новый текст нечто.

Код wp text diff: wp-includes/pluggable.php WP 4.8.2

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

Cвязанные функции

Из раздела: Без рубрики

Danya 50
Программист фрилансер. Кодингом на PHP занимаю с 2008 года.

Ipad air подробности тут

ipad air подробности тут

ru-store.ru

wp_text_diff Комментариев нет

Здравствуйте, !

Ваш комментарий