PHP: Tags inkl. Inhalt entfernen?

Dieses Thema PHP: Tags inkl. Inhalt entfernen? im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Michael_B, 19. Nov. 2002.

Thema: PHP: Tags inkl. Inhalt entfernen? Hallöchen, ich will mit PHP ein Progi schreiben, das HTML-Dateien durchgeht und Tags entfernt, so dass nur noch der...

  1. Hallöchen,

    ich will mit PHP ein Progi schreiben, das HTML-Dateien durchgeht und Tags entfernt, so dass nur noch der Text zu sehen ist.
    Die Methode Strip-Tags ist ja schon ganz gut, die Funktion erfüllt allerdings nicht alle Kriterien, die ich stelle. Ich habe nämlich tw. in den HTML-Dateien hochgestellten Text (bsp: <sup>xyz</sup>). Für diesen Fall möchte ich gerne nicht nur den Tag, sondern auch den darin befindlichen Text entfernen.
    Meine Frage: gibt es eine solche Funktion oder gibt es vielleicht einen Platzhalter (wie % oder _ bei SQL)? Mit einem Platzhalter könnte ich dann mit str_replace arbeiten. (str_replace(<sup>xyz</sup>,,$string)).

    Für Ideen und Anregungen: thx
     
  2. Hi

    Was du suchst sind Regular Expressions:
    $gettext = preg_replace(|<sup>.*?</sup>|is, $text);

    Gruß, Michael
     
  3. Sooo, erstmal ein dickes Dankeschöön.  :D
    Ich habe mich mittlerweile mal ein wenig schlau gemacht bzgl. der Regular Expressions. Ich versuche jetzt mal zu entschlüsseln, was die Zeichen eigentlich bedeuten.

    $gettext = preg_replace(|<sup>.*?</sup>|is, $text);
    Hier hattest du nen kleinen Fehler drin. Es fehlte noch der String der gegen das angegebene Muster ersetzt werden soll. Richtig lautet die dann:
    $gettext = preg_replace(|<sup>.*?</sup>|is, , $text);

    Der Punkt (.) ist ein Platzhalter, der auf jedes beliebige Zeichen passt.
    Das Sternchen (*) erkennt das vorstehende Element mehrfach, sofern es vorhanden ist. Das bezieht sich also im obigen Beispiel auf den Punkt. (Ohne * würde ich nur nach Mustern suchen, die innerhalb des Tags nur 1 Zeichen haben.)
    Das Fragezeichen (?) passt auf ein beliebiges Zeichen einmal, sofern es vorhanden ist. Aber: in diesem Zusammenhang check ich das nicht ganz. Auf was bezieht sich denn (im Beispiel) das '?' ?
    Die Pipe (|) grenzt das Muster ein (glaub ich jedenfalls).

    Aber wofür ist das 'is' noch in dem String??
     
  4. Hi

    Stimmt, das eine Argument hatte ich vergessen.
    Die | sind die Delimiter in diesem Fall, grenzen also wie du richtig festgestellt hast das ganze ein.

    Das ? hinter .* steht für bis zum ersten was danach kommt. Ohne das würde es den kompletten Text zwischen dem ersten <sup> und dem letzten </sup> ersetzen die in deinem Text vorkommen, auch wenn es dazwischen schon mehrmals wieder geschlossen wurde.

    Das is sind Modifier.
    i bedeutet groß-, kleinschreibung egal, was du ja sicher haben willst und s bedeutet, das das .* auch über Zeilenumbrüche im Quellcode hinausgeht.

    Ist ganz gut im PHP Manual beschrieben.
    http://www.php.net/manual/en/pcre.pattern.modifiers.php
    http://www.php.net/manual/en/pcre.pattern.syntax.php

    Gruß, Michael
     
  5. Sehr geil... macht richtig Spass, damit zu arbeiten.
    Vielen Dank für deine nützlichen Tipps.
    :) :D ;D

    Habe da nur noch ein Problem: in einem anderen Skript muss ich die grammatische (?) Gültigkeit von eMail-Adressen überprüfen. Nur weiss ich nicht genau, wie die Grammatik aussieht, also ob es bspw. erlaubt ist, mit Zahlen zu beginnen. Wäre nett, wenn mir da jmd. mal eine preg_match-Funktion schreiben könnte ;D

    Vielen vielen vielen Dank.
     
  6. Hi

    Ich benutze diese Funktion:
    preg_match(/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i, $ob)
    Die ist eigentlich recht verbreitet.
    Und gleichzeitig eine gute Übung zum Verständnis :)

    Gruß, Michael
     
  7. Danke für die nette Begrüßung
    aber wo finde ich das Forum für Windows live Mail, oder wird das nicht bearbeitet.
    Danke Peter
     
  8. Hallo,
    dein Problem würde ich in die Kategorie "Software" schreiben.



    Gruß Lennox1058
     
  9. Ist längst erledigt, siehe http://www.windows-seven-forum.de/windows-live-mail-kantaktadressen-loeschen-5734.html#post45057

    :rolleyes:
     
Die Seite wird geladen...

PHP: Tags inkl. Inhalt entfernen? - Ähnliche Themen

Forum Datum
Cursor zwischen den Tags platzieren Windows XP Forum 26. Juni 2013
suche kostenloses Programm für mp3 Tags Windows XP Forum 26. Aug. 2010
Kommentare von mp3-Tags im Explorer anzeigen Windows XP Forum 12. Okt. 2009
Tags in Word via Makro generieren Microsoft Office Suite 15. Feb. 2009
mp3 - Batch-Umbenennen mit neuen Tags Audio, Video und Brennen 21. März 2008