wp_html_split() WP 4.2.4

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

Функція може стати в нагоді, коли потрібно замінити/обробити рядок, який знаходиться всередині HTML тега або навпаки обробити самі HTML теги. Наприклад, WP ця функція застосовується для обробки шоткодів всередині HTML тегів, в атрибутах тега, див код do_shortcodes_in_html_tags() .

Працює на основі:
get_html_split_regex()
1 раз – 0.000167 сек
(швидко) | 50000 разів – 0.14 сек
(дуже швидко) |
PHP 7.1.11, WP 4.9.8

Хуків немає.

Повертає

Строку[]. Розібраний на текст теги.

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

wp_html_split ($ input);
$input
(рядок) (обов’язковий)
Рядок (HTML код), який потрібно розібрати на частини.

Приклади

0

#1 Приклад того, як функція розбирає HTML код

$html = '<h1>Текст заголовка</h1>
<p>Текст у параграфі.</p>
<p class="func_note" title="текст для атрибута">Параграф з атрибутами.</p>
<h5>Підзаголовок</h5>
<br />
Просто текст без тегів.
<!-- HTML коментар -->
<dl>
	<dt>ДТ текст <em>вкладений у ДП тег</em></dt>
	<dd>ДД текст.</dd>
</dl>';

$splited_html = wp_html_split($html);

Отримаємо такий масив:

Array
(
	[0] =>
	[1] => <h1>
	[2] => Текст заголовка
	[3] => </h1>
	[4] =>

	[5] => <p>
	[6] => Текст у параграфі.
	[7] => </p>
	[8] =>

	[9] => <p class="func_note" title="текст для атрибута">
	[10] => Параграф із атрибутами.
	[11] => </p>
	[12] =>

	[13] => <h5>
	[14] => Підзаголовок
	[15] => </h5>
	[16] =>

	[17] => <br />
	[18] =>
Просто текст без тегів.

	[19] => <!-- HTML коментар -->
	[20] =>

	[21] => <dl>
	[22] =>

	[23] => <dt>
	[24] => ДП текст
	[25] => <em>
	[26] => вкладений у ДП тег
	[27] => </em>
	[28] =>
	[29] => </dt>
	[30] =>

	[31] => <dd>
	[32] => ДД текст.
	[33] => </dd>
	[34] =>

	[35] => </dl>
	[36] =>
)
0

#2 Зберемо всі IMG теги з переданого контенту

Це демонстраційний приклад, взагалі зібрати IMG теги простіше за регулярне.

$content = 'Текст <img src="/foo.jpg" /> <p>параграф</p> <img src="/bar.jpg" />';

$textarr = wp_html_split($content);
$imgs = [];

foreach( $textarr as $element ){
	// це не тег, пропускаємо (перевірка показана тільки для прикладу)
	if( '' == trim($element) || '<' !== $element[0] )
		continue;

	if( substr($element, 1, 3) === 'img' )
		$imgs[] = $element;
}

/* $imgs
Array(
	[0] => <img src="/foo.jpg" />
	[1] => <img src="/bar.jpg" />
)
*/

список змін

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

Код wp_html_split() WP 6.0.2

function wp_html_split( $input ) {
	return preg_split( get_html_split_regex(), $input, -1, PREG_SPLIT_DELIM_CAPTURE );
}

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

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