Разбиение html-тегов и содержимого кода

Кто-нибудь, у кого больше знаний о регулярных выражениях, знает, как разделить html-код, чтобы все теги и все слова были разделены, т.е.

<p>Some content <a href="www.test.com">A link</a></p> 

Отделяется следующим образом:

 array = { [0]=>"<p>", [1]=>"Some", [2]=>"content", [3]=>"<a href='www.test.com'>, [4]=>"A", [5]=>"Link", [6]=>"</a>", [7]=>"</p>" 

До сих пор я использовал preg_split, и мне удалось либо успешно разбить строку на пробел, либо разбить по тегам, но затем все содержимое находится в одном элементе массива, когда я его разделил.

Кто-нибудь мне помогает?

Related of "Разбиение html-тегов и содержимого кода"

preg_split не следует использовать в этом случае. Попробуйте preg_match_all:

 $text = '<p>Some content <a href="www.test.com">A link</a></p>'; preg_match_all('/<[^>]++>|[^<>\s]++/', $text, $tokens); print_r($tokens); 

вывод:

 Array ( [0] => Array ( [0] => <p> [1] => Some [2] => content [3] => <a href="www.test.com"> [4] => A [5] => link [6] => </a> [7] => </p> ) ) 

Я предполагаю, что вы забыли включить 'A' в 'A link' в вашем примере.

Поймите, что, когда ваш HTML содержит <или> не означает начало или конец тегов, regex будет бесполезно испортить вещи! (следовательно, предупреждения)

Вы можете проверить простой HTML DOM Parser

Или посмотрите на парсер DOM в PHP

Попробуйте простой HTML Dom Parser . HTML слишком нерегулярен для регулярных выражений.

В настоящее время я использую простой HTML DOM Parser в нескольких приложениях и считаю его отличным инструментом даже в сравнении с другими анализаторами HTML, написанными на других языках.

Почему именно вы разделяете HTML в строку токенов, которые вы описали? Разве древовидная структура элементов DOM не подходит для вашего конкретного приложения?