Schrift
[thread]7191[/thread]

RegEx zum Tags entfernen arbeitet nicht richtig



<< >> 5 Einträge, 1 Seite
DrWhiteLetter
 2005-08-07 22:37
#57012 #57012
User since
2005-01-30
26 Artikel
BenutzerIn
[default_avatar]
Ich habe ein Programm geschrieben, was mir eine best. Website ausliest, dieses klappt auch wunderbar und ich erhalte als ausgabe den Quelltext einer HTML-Tabelle, doch nun hätte ich gerne nur den Inhalt von dieser und desshalb wollte ich einfach alle Tags mit

s/<.*>//g;

entfernen, doch wenn ich das so mache, habe ich plötzlich garkeine Ausgabe mehr, habe ich irgendwas übersehen?

Danke

MfG Tobias
renee
 2005-08-07 22:44
#57013 #57013
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
.* ist sehr gierig. Wenn Du es unbedingt mit einer eigenen RegEx machen willst, dann solltest Du s!<[^>]*?>!!g nehmen.

Aber ich empfehle Dir dringen, Dich mit CPAN:HTML::Parser (siehe auch Wiki-Artikel) auseinanderzusetzen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-08-07 22:46
#57014 #57014
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
z.B.:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#! /usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use HTML::Parser;

my $pa = qq~ <p>This is a bad try to display text then code
<pre>#! usr/bin/perl
use strict;
use warnings;

print "Hello World!";</pre>
and then plain text again</p>~;



my $parser = HTML::Parser->new(
start_h => [ \&_starttag, 'self, tagname, attr' ],
end_h => [ \&_endtag, 'self, tagname' ],
text_h => [ \&_text, 'self, dtext' ]
);

$parser->parse($pa);

sub _starttag {
my ($self, $tag, $attr) = @_;
$self->{'_body'} = 1 if ($tag eq 'body');
}

sub _endtag {
my ($self, $tag) = @_;
$self->{'_body'} = undef if ($tag eq 'body');
}

sub _text {
my ($self, $dtext) = @_;

$dtext =~ s/\A\s+//;
$dtext =~ s/\s+\z//;
return() unless ( length($dtext) > 0 and $dtext =~ /[^\s]/ );

if ( defined($self->{'_body'}) ) {
print $dtext," ";
}
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
DrWhiteLetter
 2005-08-07 23:48
#57015 #57015
User since
2005-01-30
26 Artikel
BenutzerIn
[default_avatar]
Danke renee für die Mühe,
den HTML-Parser hab ich aber nicht benötigt, klappt auch so alles Prima nur das mit den Umlaute konnte ich nicht regeln. Da diese nicht w3c-konform im Quelltext dargestellt sind.

Hmm ich weiß nicht, ob ich dazu einen extra Thread eröffnen soll, ich hätte noch eine kleine rechtliche Frage dazu.

Ich habe ein Programm geschrieben, dass mir praktisch immer das aktuelle TV-Programm ausgibt, die Daten werden von einer anderen Seite eingelesen, wenn ich das Programm öffentlich zur Verfügung stellen würde, wird ja deren Server belastet und traffic verursacht. Ist das dann überhaupt gestattet?
esskar
 2005-08-08 02:53
#57016 #57016
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
für die Umlaute gibt es ein modul namens HTML::Entities (so heißt es glaube ich)

zu dem anderen: inhalten von anderen seiten von anderen auf eigenen seiten einbinden, ist nicht immer erlaubt.
lieber mal die originale webseite um erlaubnis fragen
<< >> 5 Einträge, 1 Seite



View all threads created 2005-08-07 22:37.