RegEx HTML Tags+INHALT entfernen

  • Themenstarter Themenstarter ReggaePanda
  • Beginndatum Beginndatum
R

ReggaePanda

Hi, ich muss in einem String alle HTML-Tags entfernen ABER inklusive dessen Inhalt(also den text der zwischn den tags steht)

Beispiel:

STRING:
-----------------------
<a href="blabla.html" target="_blank">Linktext</a><br><br />
<input name="derName" />
DER TEXT SOLL AUSGEGEBEN WERDEN UND MEHR NICHT <b>mich übrigends nicht!</b>
<ul>
<li>nein mich auch nicht</li>
</ul>
----------------------

AUSGABE:
----------------------
DER TEXT SOLL AUSGEGEBEN WERDEN UND MEHR NICHT
----------------------


Kann mir irgendjemand dabei behlflich sein?
 
Vielen Dank schonmal, aber leider wollt ich das so nicht haben....

Der Quellcode ist nur ein Beispiel und kann immer anders sein, deswegen darf da nichts hart codiert sein.
Leider ist auch die ausgabe falsch. Mir wird alles ausgegeben, außer dem input und dem was ich haben will :o

Siehe:
http://www.regex-tester.de/uc_1072_de.html
 
Das hier entfern alles zwischen < und >
PHP:
$pattern = "/<.*>/";
$str = preg_replace($pattern, "", $str);
 
Probier's mal damit:
PHP:
<([a-zA-Z])*(.*)(</\1>|/>)*
Musst das Ergebnis anschließend wohl noch'

Edit: Oh man - ich glaub langsam ich denk zu kompliziert.. :)
 
Zuletzt bearbeitet:
Vielen Dank schonmal, aber leider wollt ich das so nicht haben....

Der Quellcode ist nur ein Beispiel und kann immer anders sein, deswegen darf da nichts hart codiert sein.
Leider ist auch die ausgabe falsch. Mir wird alles ausgegeben, außer dem input und dem was ich haben will :o

Siehe:
http://www.regex-tester.de/uc_1072_de.html

Schön und gut. Nur sehe ich bei deinem Beispiel keine Regellässigkeit die bestimmt, was herausgenommen werden soll.
Du hast Texte die du willst und solche die du nicht willst. Beschreibe mal die Regeln eindeutig mit Worten.
 
Also erstmal von vorne

ich arbeite mit Simple_html_dom

und da hab ich ein
DIV
in welchem weitere Elemente mit html Tags sind,
aber auch Text ohne html Tags.

Den String den ich habe, ist der String zwischen dem Div Tag. (siehe "Beispiel" oben)

Jetzt möchte ich den String innerhalb des DIV, haben, welcher nicht von irgendeinem Tag umschlossen ist. (siehe "Ausgabe" oben).

Leider können die HTML Tags immer unterschiedlich sein.
Wenn innerhalb des Divs nur elemente sind die von html Tags umschlossen sind darf auch NICHTS ausgespuckt werden.

-----

Die anderen Wege gehen (nach escapen und versuchten anpassungen) leider auch nicht :(

http://www.regex-tester.de/uc_1073_de.html
 
Hi.

PHP:
//
  // Text, der durchsucht werden soll
  //
  $subject = '<a href=\"blabla.html\" target=\"_blank\">Linktext</a><br><br />
<input name=\"derName\" />
DER TEXT SOLL AUSGEGEBEN WERDEN UND MEHR NICHT <b>mich übrigends nicht!</b>
<ul>
<li>nein mich auch nicht</li>
</ul>';
  //
  // Der Reguläre Ausdruck
  //
  $pattern = '@<(\S+)([^>]*/>|.*</\1\s*>)@is';
  //
  // Ersatzstring
  //
  $replace = '';
  //
  // RegExp auswerten, Ersetzung durchführen
  //
  $result = preg_replace($pattern, $replace, $subject);
Gruß
 
Hab mal ein Beispiel mit einzelnem entfernen
PHP:
<?php 
$html = 
'html-text
<div>
<a href="blabla.html" target="_blank">Linktext</a><br><br />
<input name="derName" />
DER TEXT SOLL AUSGEGEBEN WERDEN UND MEHR NICHT <b>mich übrigends nicht!</b>
<ul>
<li>nein mich auch nicht</li>
</ul>
</div>
mehr text
<div>noch mehr Text den wir haben wollen</div>';

//Alle Div-Inhalte ermitteln
$pattern = '/<div>(.*)<\/div>/sU';
// RegEx mit preg_match_all() auswerten 
preg_match_all($pattern, $html, $array); 

//pro div-Inhalt einzeln ausdünnen
foreach($array[1] as $string){

    // Alle <tag>text</tag> entfernen
    $pattern = '/<[^>]*>[^<]*<\/[^>]*>/s';
    $ersatz = '';
    do{
        $string = preg_replace($pattern, $ersatz, $string,-1, $count);
    } while ($count > 0); 
    
    //Alle <tag /> und <tag/> entfernen
    $pattern = '/<[^\/]*\/>/s';
    do{
        $string = preg_replace($pattern, $ersatz, $string,-1, $count);
    } while ($count > 0); 
    
    echo $string;

}
?>
 
Zurück