wp_html_split()
Розбирає переданий текст (як HTML коду) на HTML теги і коментарі, повертає масив значень: теги та його текст.
Функція може стати в нагоді, коли потрібно замінити/обробити рядок, який знаходиться всередині HTML тега або навпаки обробити самі HTML теги. Наприклад, WP ця функція застосовується для обробки шоткодів всередині HTML тегів, в атрибутах тега, див код do_shortcodes_in_html_tags() .
Працює на основі:
get_html_split_regex()
get_html_split_regex()
1 раз – 0.000167 сек
(швидко) | 50000 разів – 0.14 сек
(дуже швидко) |
PHP 7.1.11, WP 4.9.8
(швидко) | 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" /> ) */
список змін
З версії 4.2.4 | Введено. |
Код wp_html_split() 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 ); }