Funktionserweiterung strip_tags

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Funktionserweiterung strip_tags

    Hallo,

    kann mir jemand sagen, wie ich Teile des Quellcodes ersetzen kann?
    Ich verwende bisher die Funktion strip_tags() um den Plaintext der Seite zu erhalten. Allerdings möchte nicht nur die HTML-Tags entfernen, sondern bei bestimmten Tags (z. B. <a>, <img>, <h1> etc.) soll auch der eingeschlossene Plaintext mit entfernt werden.

    Beispiel:
    <a href="/link.html" title="Linktext">Hier steht der Linktext</a>

    Hier soll also nicht "Hier steht der Linktext" übrig bleiben, sondern alles komplett entfernt werden.

    Gibt es eine Möglichkeit die Funktion strip_tags zu erweitern oder das Vorhaben anderweitig umzusetzen?

    Hat jemand eine Idee?
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

  • #2
    Hallo,

    schreib dir doch eine eigene Funktion, die das erledigt. Ich würde spontan dazu tendieren, dass man da mit einer XSL-Transformation am elegantesten zum Ziel kommt.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Um ehrlich zu sein, ich hatte bereits eine ähnliche Idee. Ich habe nach einem HTML-Parser gesucht und das hier gefunden: PHP Simple HTML DOM Parser

      Problem ist, dass er mir beispielsweise Links zwar korrekt ausliest und diese z. B. aufgelistet werden können. Dann hatte ich folgendes vor:
      1. Ich hole mir den kompletten Quellcode
      2. Ich liste mir die Links zuerst auf und nach dem auflisten lasse ich einen Replace über den kompletten Code laufen, der mir dann mit $element->outertext den kompletten Link (also den Tag inkl. Linktext) "rausschneidet".
      3. Nachdem ich das mit Links, Headlines etc. gemacht habe bleibt dann der reine Text übrig (ohne HTML-Tags UND ohne den Text, den diese umschließen.

      Problem dabei ist, dass das irgendwie nicht funktioniert. Teilweise klappt es, teilweise nicht. Ich versuche seit Stunden herauszufinden, an was es liegt, finde aber einfach keine Lösung.

      PHP-Code:
      <?php
      include_once('./html-parser/simple_html_dom.php');
      include_once(
      './inc/functions.inc.php');
      $url 'http://www.url.net/';
      $url2 'http://www.url.net/';
      $url3 'http://www.url.net';

      // Seite laden
      $code file_get_contents($url);

      // Script-Tags entfernen
      $content preg_replace('/<script\b[^>]*>(.*?)<\/script>/is'""$code);

      // Alle HTML-Tags bis auf Links, Headings und Images entfernen
      $code_view strip_tags($content'<a><h1><h2><h3><h4><h5><h6><img>');

      $html file_get_html($url);
      foreach(
      $html->find('a') as $element) {
        
      $code_view str_replace($element->outertext,"",$code_view);
      }
      /**
       * Code ohne Links UND ohne Linktexte ausgeben
       */
      echo $code_view;
      ?>
      Das komische ist, dass es eben teilweise funktioniert und größtenteils aber leider nicht. Ich habe die Vermutung, dass es mit dem Quellcode an sich zu tun haben könnte. Weil beispielsweise der HTML-Parser unnötige Leerzeichen und Zeilenumbrüche löscht, der Replace jedoch nicht...

      Könnt ihr mir einen Tipp geben, wie ich das Problem lösen kann?
      Das Genie überblickt das Chaos!

      Wer Rechtschreibfehler findet, darf sie behalten!

      Kommentar


      • #4
        Wofür dieser Parser? PHP hat doch einen eingebaut: PHP: DOM - Manual

        DOMDocument ist zwar auf XML ausgelegt, hat aber auch Methoden, um HTML zu parsen und auch wieder zu serialisieren.

        Mit regulären Ausdrücken solltest du dabei gar nicht erst anfangen. Entweder vergisst du dabei was und irgendwann kracht es oder du machst alles richtig (was nicht ganz einfach ist) und hast am Ende lächerlich umständliche, nicht nachvollziehbare und rekursive Regexe.

        Darum lautet die Devise: Nimm den eingebauten und bewährten Parser! Am besten wie gesagt in Verbindung mit XSL, dann kannst du auf übersichtliche und nachvollziebare Weise definieren, was wie ersetzt werden soll und kannst das später auch noch verändern, ohne alles neu schreiben zu müssen, weil du nicht mehr durchsiehst.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar

        Lädt...
        X