html mit regulärem Ausdruck zerlegen

hi,

ich will einen einfachen Html-Text in seine Einzelteile zerlegen.

Dazu soll aus

Das ist eine <b>Test</b>

ein array gemacht werden

array(
[0] = Das
[1] = ist
[2] = eine
[3] = <b>
[4] = Test
[5] = </b>

meine (fast) Lösung besteht darin ein

$pattern = '#[(<^>>)|\s]+#mU';
$token = preg_split($pattern, $html);

nur fehlen mir dann leider die spitzen Klammern um die html Tags

[0] = Das
[1] = ist
[2] = eine
[3] = b
[4] = Test
[5] = /b

wie erhalte ich den die < und > vor den tags?

thanks
stefan
Stefan Kilp [ Do, 15 November 2007 01:03 ] [ ID #1870713 ]

Re: html mit regulärem Ausdruck zerlegen

Stefan Kilp wrote:

> Dazu soll aus
> Das ist eine <b>Test</b>
>
> ein array gemacht werden
>
> array(
> [0] = Das
> [1] = ist
> [2] = eine
> [3] = <b>
> [4] = Test
> [5] = </b>
>
> nur fehlen mir dann leider die spitzen Klammern um die html Tags
> wie erhalte ich den die < und > vor den tags?

Füge einfach vorher ein Leerzeichen an den notwendigen Stellen ein und
zerlege erst dannach.

$str = 'Ich bin ein <b>Text</b> mit html';
$str_prepared = preg_replace_callback(
'~(>)([^\s])|([^\s])(<)~',
'myCallback',
$str
);

function myCallback($m) {
if (isset($m[1]) && !empty($m[1])) return $m[1].' '.$m[2];
return $m[3].' '.$m[4];
}

print_r(preg_split('~\s+~', $str_prepared));

Das muß je nach komplexitatät des HTML noch angepaßt werden sollte aber
für das von Dir gepostete HTML ausreichen.

Merke: Zusätzliche Zwischenschritte sind nix böses :-)

MfG, Ulf

--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Ulf Kadner [ Do, 15 November 2007 11:45 ] [ ID #1871704 ]

Re: html mit regulärem Ausdruck zerlegen

Stefan Kilp <stefan.kilp [at] gmx.net> wrote:
>Dazu soll aus
>
> Das ist eine <b>Test</b>
>
>ein array gemacht werden
>
>array(
> [0] = Das
> [1] = ist
> [2] = eine
> [3] = <b>
> [4] = Test
> [5] = </b>

$html = 'Das ist eine <b>Test</b>';
preg_match_all('/(?:<.*?>)|(?:\w+)/', $html, $token);

print_r(reset($token));

Array
(
[0] => Das
[1] => ist
[2] => eine
[3] => <b>
[4] => Test
[5] => </b>
)

schöne grüße, steffen
steffen bruentjen [ Do, 15 November 2007 12:10 ] [ ID #1871706 ]
PHP » de.comp.lang.php.misc » html mit regulärem Ausdruck zerlegen

Vorheriges Thema: Praktische Lösungen eine Session vor Diebstahl zu sichern
Nächstes Thema: Variablen-Bezeichnungen via For-Schleife festlegen