wp_html_split()
Разбирает переданный текст (в виде 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" /> ) */
Список изменений
С версии 4.2.4 | Введена. |
Код wp_html_split() wp html split WP 6.8
function wp_html_split( $input ) { return preg_split( get_html_split_regex(), $input, -1, PREG_SPLIT_DELIM_CAPTURE ); }