[PHP] <.*> in einem Teilstring rausfiltern
-
Hallo,
ich habe ein String, der ungefähr so aussieht "...<span keyword=\"text\">"...<span...></span>...<span...></span>.."</span>...". Nun möchte ich die ganzen <span> Tags innerhalb des <span keyword="text"></span> Tags entfernen.Ich dachte, dass ich das irgend wie so hinbekommen kann
$code=preg_replace ('/<span class="text">"(.*)<.*>(.*)"<\\/span>/U', '<span class="text">"\\0\\1"</span>', $code);
aber das geht natürlicht nicht.
Hat jemand von euch eine Idee?
-
Ich denke, du musst erst den inneren String (innerhalb des gewollten span) extrahieren und dann mit einem "nicht-gierigen" replace alles mit <*> durch nichts ersetzen - k.A., ob du damit jetzt etwas anfangen kannst
Aber bzgl. regulären Ausdrücken gibt es hier auch noch deutlich kompetentere Leute im Forum - evtl. kann dir da ja noch jemand einen fertigen Ausdruck servieren
-
Wenn in den ganzen inneren <span>s kein " vorkommt, dann könntest du dieses Token ja als End-Delimiter benutzen. Statt dem gierigen .* liest du praktisch so lange ein, bis du auf das Token ""</span>" stößt.
-
So gehts:
$new=preg_replace('#<span class="text">(.*)</span>#e','\'<span class="text">\'.striptags(\'$1\').\'</span>\'',$old);
Gruß Jens
-
thx
mit ein paar Anpassungen geht es$new=preg_replace('#<span class="text">"(.*)"</span>#Ue', '\'<span class="text">"\'.strip_tags(\'$1\').\'"</span>\'',$old);