freeforsnak
Новичок
Разбор HTML с помощью PCRE, требуется свежий взляд
Искал долго и упорно в мане, потом на форуме, не помогло.
Если уже было чего подобное, прошу не пинать ногами, а указать дислокацию обсуждения.
Буду краток:
Задача такова: на вход после WYSIWYG приходит отформатированый HTML, надо разбить его в массив на части по тэгу <H1-6>.
Пример:
------------------------------
< H1 >some headers1< /H1 >some text 1
< H2>headers2</H2>some text 2
<H2>headers2_2</h2>some text 3
<H3 align="center">headers3_1< /h3 >some text 4
<H2>headers2_2</h2>some text 3
< H1 >some headers1_2< /H1 >some text 5
<H3>headers3_2</h3>some text 6
------------------------------
На выходе должно выйти
array{
[0]=>array{[0]=>"some headers1", [1]=>"H1", [2]=>"some text 1 "},
[1]=>array{[0]=>"headers2", [1]=>"H2", [2]=>"some text 2 "},
[2]=>array{[0]=>"headers2_2", [1]=>"H2", [2]=>"some text 3 "},
[3]=>array{[0]=>"headers3_1", [1]=>"H3", [2]=>"some text 4 "},
и т.д.
}
Пытался сделать с помощью preg_match_all:
$st -- входящий текст;
$witheaders -- регулярка;
$ar_2 -- выходной массив;
текст в <Hx></Hx> берет, уровень берет, а текст ну никак не попадает в результат
((
Прошу подсказать, как вылечить, ибо разнообразные извращения с регуляркой не принесли плодов, чего-то аж башню начинает сносить -- во сне регулярки составляю 8()
----
P.S. Linux+Apache1.3.33+PHP4.0.3
P.P.S.Не обязательно тэги правильно оформлены(пробельные символы около < и >), наведенный пример вполне реален.
Искал долго и упорно в мане, потом на форуме, не помогло.

Если уже было чего подобное, прошу не пинать ногами, а указать дислокацию обсуждения.
Буду краток:
Задача такова: на вход после WYSIWYG приходит отформатированый HTML, надо разбить его в массив на части по тэгу <H1-6>.
Пример:
------------------------------
< H1 >some headers1< /H1 >some text 1
< H2>headers2</H2>some text 2
<H2>headers2_2</h2>some text 3
<H3 align="center">headers3_1< /h3 >some text 4
<H2>headers2_2</h2>some text 3
< H1 >some headers1_2< /H1 >some text 5
<H3>headers3_2</h3>some text 6
------------------------------
На выходе должно выйти
array{
[0]=>array{[0]=>"some headers1", [1]=>"H1", [2]=>"some text 1 "},
[1]=>array{[0]=>"headers2", [1]=>"H2", [2]=>"some text 2 "},
[2]=>array{[0]=>"headers2_2", [1]=>"H2", [2]=>"some text 3 "},
[3]=>array{[0]=>"headers3_1", [1]=>"H3", [2]=>"some text 4 "},
и т.д.
}
Пытался сделать с помощью preg_match_all:
$st -- входящий текст;
$witheaders -- регулярка;
$ar_2 -- выходной массив;
PHP:
$witheaders ='/<\s*(H[1-6]{1}){1}.*>(.*)<\s*\/\1{1}.*>(.*)/Uis';
$w=preg_match_all($witheaders,$st,$ar_2,PREG_SET_ORDER);
((Прошу подсказать, как вылечить, ибо разнообразные извращения с регуляркой не принесли плодов, чего-то аж башню начинает сносить -- во сне регулярки составляю 8()
----
P.S. Linux+Apache1.3.33+PHP4.0.3
P.P.S.Не обязательно тэги правильно оформлены(пробельные символы около < и >), наведенный пример вполне реален.