ad: HTML includen und gruslige style-Angaben entfernen

Moin,
ein Kunde hat einen eigenen Kalender mit 365 Texten. Jeden Tag wird der entspr. Text angezeigt. Es steht ein Relaunch an und der Kalender muss mit.

Der Kalender besteht aus 366 einzelnen HTML Seiten. Per PHP wird jeweils die richtige angezeigt. Das HTML in den Seiten ist so ziemlich das grusligste, was ich bis jetzt gesehen habe. Da das Budget begrenzt ist, gibt es keine andere Möglichkeit als auf die bestehenden HTML-Seiten weiterhin zurückzugreifen und einzubinden.

Kleine Kostprobe:

  
<DIV style="position:absolute;top:27;left:66"><nobr><span class="ft0">1. Januar</span></nobr></DIV>  
<DIV style="position:absolute;top:49;left:66"><nobr><span class="ft1">Die zerbrochene Eierschale </span></nobr></DIV>  
<DIV style="position:absolute;top:60;left:417"><nobr><span class="ft2">aa bb cc dd ee ff</span></nobr></DIV>  

Wenn ich mir die HTML-Seite direkt ansehe, schaut alles noch erträglich aus. Wenn ich die HTML include, steht so gut wie alle Texte übereinander und man kann nix mehr lesen.

Frage: Kann ich, ohne die HTML-Dateien manipulieren zu müssen, alle style-Angebaen darin irgendwie deaktivieren beim inkludieren?

Oder fällt euch eine andere Möglichkeit ein?

Danke
andi

  1. Hi,

    Frage: Kann ich, ohne die HTML-Dateien manipulieren zu müssen, alle style-Angebaen darin irgendwie deaktivieren beim inkludieren?

    Ich denke nicht, zumindest fällt mir spontan keine Möglichkeit ein.

    Oder fällt euch eine andere Möglichkeit ein?

    Mit JS: Alle Style-Attribute raussuchen und leeren bzw. löschen.
    Mit PHP geht sowas m.W. nicht.

    Gruß
    Jackson

    1. hi,

      Hi,

      Frage: Kann ich, ohne die HTML-Dateien manipulieren zu müssen, alle style-Angebaen darin irgendwie deaktivieren beim inkludieren?
      Ich denke nicht, zumindest fällt mir spontan keine Möglichkeit ein.
      Oder fällt euch eine andere Möglichkeit ein?
      Mit JS: Alle Style-Attribute raussuchen und leeren bzw. löschen.
      Mit PHP geht sowas m.W. nicht.

      Ich würde hierbei vorsichtig mit striptags arbeiten. Du musst nur das was du zum selber handhaben brauchst, stehen lassen.

      Gruß Niklas

      --
      Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
    2. Hi & danke

      Mit JS: Alle Style-Attribute raussuchen und leeren bzw. löschen.

      Wie kann ich die styles in den DIVs den ansprechen? Die haben ja nicht mal ne ID :-/

      ciao - andi

      1. Wie kann ich die styles in den DIVs den ansprechen? Die haben ja nicht mal ne ID :-/

        Ich kenne die HTML-Struktur nicht. Wahrscheinlich musst dich bis zu dem betreffenden Elemente runterhangeln und dann über getElementsByTagName() das Div ansprechen.

    3. Mit JS: Alle Style-Attribute raussuchen und leeren bzw. löschen.
      Mit PHP geht sowas m.W. nicht.

      Es gibt auch DOM-Implementationen für PHP.
      Ansonsten reguläre Ausdrücke oder string-replace-Mechanismen, diese dürften bei XHTML garnicht so schwierig zu implementieren sein, bei normalen HTML wirds deftiger.

  2. hi,

    mir würde hier bei so vielen Dateien einfallen, das ganze mit php einzulesen und bei bestimmten dingen zu teilen oder zu filtern (explode, preg_..., str_replace, ...).

    Danach das ganze mit striptags sauber machen.

    Danach kannst du das ganze sauber in z.b. ein Multiarray abspeichern (oder als xml) und kannst es schön sauber anzeigen. Eventuell noch 10 min drüber schauen und den rest bereinigen.

    Auf gut Deutsch: Mach dir die Arbeit und bereinige die Quelle einmal sauber.
    Mit Suchen und Ersetzen, kannst du vermutlich auch schnell das ziel erreichen (programmiert).

    Gruß Niklas

    --
    Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
    1. hi & danke

      Auf gut Deutsch: Mach dir die Arbeit und bereinige die Quelle einmal sauber.
      Mit Suchen und Ersetzen, kannst du vermutlich auch schnell das ziel erreichen (programmiert).

      Das Problem wird aber sein, das die Angaben nicht in jeder Datei gleich sind:

      <DIV style="position:absolute;top:27;left:66"><nobr><span class="ft0">1. Januar</span></nobr></DIV>
      und
      <DIV style="position:absolute;top:27;left:48"><nobr><span class="ft0">2. Januar</span></nobr></DIV>

      Da komme ich automatisiert nicht wirklich weit, oder? Bzw. was genau sollte ich hier suchen & ersetzen?

      ciao andi

    2. Hi nochmal

      mir würde hier bei so vielen Dateien einfallen, das ganze mit php einzulesen und bei bestimmten dingen zu teilen oder zu filtern (explode, preg_..., str_replace, ...).

      Folgendes habe ich gerade versucht:

      $string = $file_name;
      $pattern = '/absolute/';
      $replacement = 'relative';
      include (preg_replace($pattern, $replacement, $string));

      Ich wollte alle "position:absolute;" durch "position:relative" ersetzen.
      Leider wird die Datei völlig unverändert inkludiert :-/

      Wo liegt der Fehler?

      1. Ich wollte alle "position:absolute;" durch "position:relative" ersetzen.
        Leider wird die Datei völlig unverändert inkludiert :-/

        Zweiter Versuch:

          
        $string = @fopen($file_name, "r");  
        $pattern = '/absolute/';  
        $replacement = 'relative';  
          
         while($line = fgets($string, 1024)){  
         preg_replace($pattern, $replacement, $line);  
         echo $line;  
         }  
         fclose($string);  
        
        

        Klappt leider wieder nicht :-(

        1. Klappt leider wieder nicht :-(

          Meinem bescheidenen Wissen nach operiert preg_replace nicht auf dem Eingangs-String, sonden gibt eine neue Zeichenkette zurück.

          Also sollte:

            
          $line = preg_replace($pattern, $replacement, $line);  
          
          

          funktionieren.

  3. Moin!

    Der Kalender besteht aus 366 einzelnen HTML Seiten. Per PHP wird jeweils die richtige angezeigt. Das HTML in den Seiten ist so ziemlich das grusligste, was ich bis jetzt gesehen habe. Da das Budget begrenzt ist, gibt es keine andere Möglichkeit als auf die bestehenden HTML-Seiten weiterhin zurückzugreifen und einzubinden.

    Du hast im Prinzip nur zwei Möglichkeiten:

    Entweder findest du was automatisiertes. Dann musst du hinterher alle 366 Kalendertage prüfen, ob deine Automatik korrekt gearbeitet hat, oder ob da nicht irgendwas böses übersehen wurde.

    Alternativ fasst du alle 366 Dateien manuell an und bearbeitest sie.

    Die Extraktion der Info in eine bessere Datenhaltung dürfte so oder so eine gute Idee sein.

    Wenn ich mir die HTML-Seite direkt ansehe, schaut alles noch erträglich aus. Wenn ich die HTML include, steht so gut wie alle Texte übereinander und man kann nix mehr lesen.

    Du kannst keine kompletten HTML-Seiten includen. Hast du das entstehende HTML validiert? Ich würde mindestens zwei <html>-Tags, zwei <head> und zwei <body> erwarten.

    - Sven Rautenberg

  4. Moin,

    Hai.

    Der Kalender besteht aus 366 einzelnen HTML Seiten. Per PHP wird jeweils die richtige angezeigt. Das HTML in den Seiten ist so ziemlich das grusligste, was ich bis jetzt gesehen habe. Da das Budget begrenzt ist, gibt es keine andere Möglichkeit als auf die bestehenden HTML-Seiten weiterhin zurückzugreifen und einzubinden.

    Ich würde das HTML mit einem script einlesen, mittels lib (aus der ruby welt bsp: nokogiri) das HTML einlesen, alle attribute entfernen bzw komplett neu aufbauen wie du es willst, anschliessend neu speichern, mittels PHP als string einlesen und ausgeben.

    Mfg entropie

    --
    Whenever people agree with me I always feel I must be wrong.
      -- Oscar Wilde