Sonstiges > Offtopic

HTml Datei in mehrere Dateien zerschneiden

<< < (3/4) > >>

flaite:
Tidy habe ich mir auch schon überlegt. Ich bekomme damit aber nicht so etwas wie:

--- Code: ---<span style='font:7.0pt "Times New Roman"'>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>

--- Ende Code ---
weg. Selbst wenn ich den vorhandenen Word 2000 Flag einschalte (benutze Tidy GUI).
Vielleicht kenne ich mich auch zu wenig mit Tidy aus. Aber imho kann man damit nicht einfach Tags entfernen.

Beispieldatei hänge ich in der nächsten Stunde hier an.

Gruß Axel

m3:
Soda, damit sollte es klappen:

--- Code: ---use strict;
use English;

my $filename = "";

if (not defined @ARGV ) {
    print STDERR "Usage: " . $PROGRAM_NAME . " FILENAME\n";
    exit;
}

open(IN, $ARGV[0] ) or die "Lesefehler '" . $ARGV[0] . "'! Grund: $!\n";
while(<IN>) {
    if( /\<a\s+name\s*=\s*\"?(.*?)\"?\s*\>/i ) {
        $filename = cleanup($1) . ".html";
        if( $filename ne "") {
            close(OUT);
        }
        print STDERR "Neuer Filename: $filename\n";
        open(OUT, ">$filename") or die "Schreibfehler '$filename'! Grund: $!\n";
    }
    s#(?s)( class=\w+(?=([^<]*>)))|(<!--\[if.*?<!\[endif\]-->)|(<!\[if !\w+\]>)|(<!\[endif\]>)|(<o:p>[^<]*</o:p>)|(<span[^>]*>)|(</span>)|(font-family:[^>]*[;'])|(font-size:[^>]*[;'])(?-s)##gi;
    print OUT $_ if($filename ne "");
}
close(OUT) if($filename ne "");
close(IN);

sub cleanup {
    my $text = shift @_;
   
    $text =~ s/[\s,;]/_/gi;
    $text =~ s/[:\\\/\"']/-/gi;
   
    return($text);
}

--- Ende Code ---
Ich hab auch die Erkennung für den "<a name=..." so geändert, dass es auch ohne " um den Attributwert funktioniert. Ist zwar nicht Standardkonform, aber Word generiert solche Tags. :(

Known Bug: Ich lese das File Zeiel für Zeile ein, der Word-Demoronizer erkennt daher ev. nicht jeden Word-Schwachsinn. Falls das ein Problem sein sollte, gib bescheid, dann bau ich es um.

flaite:
Wiederhole mich, aber nochmal danke.
Es gibt noch einen kleinen Bug, den ich morgen kurz beschreibe. Heute ist hier zu viel anderes zu tun. Es ist aber schon so eine echte Hilfe.

Gruß Axel

m3:
Aufwärm. Kann ich noch was für Dich tun?

flaite:
Hmm. Danke für die Nachfrage. Es kann noch sein. Ich melde mich spätestens am WE. Momentan bin ich mit etwas anderem beschäftigt (was so gar keinen Spaß macht).

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln