phpbar.de logo

Mailinglisten-Archive

[php] preg_match

[php] preg_match

Oliver Trosien oli_(at)_tronet.on-luebeck.de
Mon, 21 Feb 2000 23:59:55 +0100


Pascal Schult <info_(at)_schuborg.de> schrieb:

> hi liste..

hi pascal,


> kan mir jemand sagen, wieso ich bei dieser syntax immer noch im ergebnis
> ein html-tag habe?

Du hast ein paar Dinge nicht bedacht:
1. Im Beispiel gibt es schon einen closing tag </font> bevor der eigentliche
Text anfaengt.
2. zwischen den Tags koennten Leerstellen sein
3. tags bestehen nicht nur aus <\w+>

Folgender code funktioniert (zumindest auf Dein Beispiel):

<?php
$txt[4]= '<BR><BR></font><B><I>titel test</i></b><BR><FONT SIZE="-1">';

preg_match("|(?:      # don't save this
                </?   # could be a closing tag
                \w    # a word char is needed
                .*?   # plus anything until
                >     # closing bracket
                \s*   # might be even spaces between tags
             )*       # repeat 0..n
             ([^<]*)? # everything until another opening bracket
            |ix",$txt[4],$titel);

print $titel[1];

?>

Beschraenkung hierbei: 
1. Du bekommst _nur_ die erste Textstelle ausserhalb der html-tags.



> bitte keine tips mit: nimm doch strip_tags() ;)

nimm doch  strip^h^h^h  ... ;->
 ... preg_replace()

Damit kannst Du auch recht gut die ungewuenschten Teile eliminieren
(Wahrscheinlich besser als im obigen code).

 
cu,
oliver


php::bar PHP Wiki   -   Listenarchive