wp_text_diff() WP 2.6.0

Отримує зручну для читання HTML таблицю з відмінностями між двома переданими рядками (текстами). Використовується для порівняння змін у ревізіях запису.

Якщо між рядками немає відмінностей, wp_text_diff() поверне порожній рядок. Таблиця, що повертається, складається з двох колонок: зліва перший текст, праворуч другий. Видалені та вставлені дані позначені тегами <del> та <ins> .

Оскільки функція повертає HTML, вона спочатку використовується для візуального відображення відмінностей між старим і новим текстом (наприклад, у редакцій запису).

Це init .

Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.

Працює на основі:
Text_Diff() ,
WP_Text_Diff_Renderer_Table()

Хуків немає.

Повертає

Строку. Рядок: HTML код таблиці, якщо у рядках є різниця. Якщо різниці немає, поверне порожній рядок.

Використання

wp_text_diff( $left_string, $right_string, $args );
$left_string
(рядок) (обов’язковий)
“Старий текст” (буде ліворуч).
$right_string
(рядок) (обов’язковий)
“Новий текст” (буде праворуч).
$args
(рядок/масив)

Аргументи функції. Можна встановити заголовки таблиці:
title– заголовок загальної таблиці. За замовчуванням – пусто.
title_left– Заголовок лівої колонки таблиці. За замовчуванням – пусто.
title_right– Заголовок правої колонки таблиці. За замовчуванням – пусто.

Типово: null

Приклади

0

#1 Демонстрація порівнювання текстів

$string = 'Старий текст ще щось';
$string2 = 'Новий текст ще.';

echo wp_text_diff( $string , $string2, array(
	'title' => 'Відмінності',
	'title_left' => 'Старий',
	'title_right' => 'Новий',
)));

Цей код виведе наступне:

<table class='diff'>
	<col class='content' />
	<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> текст<del>щось</del> ще </td>
			<td></td>
			<td class='diff-addedline'><ins>Новий</ins> текст ще<ins>.</ins> </td>
		</tr>
	</tbody>
</table>

А виглядає так (залежить від css стилів вашої теми):

Відмінності
Старийновий
Старийтекстщосьще новийтекст ще.

нотатки

список змін

З версії 2.6.0Введено.

Код wp_text_diff() WP 6.0.2

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 = новий 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *