WordPress как на ладони
Официальная конференция по WordPress в Moскве 18-19 августа, начало в 9:00 wordpress jino

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 код), который нужно разобрать на части.

Примеры

#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] => 
)

#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" />
)
*/

Код wp_html_split: wp-includes/formatting.php VER 4.9.8

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

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

Из раздела: Вспомогательные

1 коммент
  • @ mihdan100 cайт: www.kobzarev.com

    вообще собрать IMG теги проще регуляркой
    лучше делоть такую задачу средствами DOM Document в РНР

    Ответить3 часа назад #
Здравствуйте, !     Войти . Зарегистрироваться