Schrift
[thread]762[/thread]

suche erst ab einem bestimmten bereich aktivieren (Seite 4)

Leser: 1


<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten
renee
 2006-06-28 15:43
#8142 #8142
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hier sollten keine Fehler mehr auftauchen:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);
use strict;
use warnings;
use CGI;
use File::Find;
use HTML::Parser;

my $cgi = CGI->new();
print $cgi->header(type => 'text/plain');
my %params = $cgi->Vars();
my $string = '';
my $basedir = '/home/netzgrafik/www.lottermoser.at/test/';

my @files = ();
find(\&find_files,$basedir);
my %includes = search($params{terms},\@files);
print_found($params{terms},\%includes);

sub find_files{
push(@files,$File::Find::name) if(-f $File::Find::name && $_ =~ /\.htm$/);
}

sub print_found{
my ($terms,$hashref) = @_;
print $terms," found in:\n";
foreach my $key(keys(%$hashref)){
print $key."\n" if($hashref->{$key} eq 'yes');
}
}

sub search{
my ($termsstring,$files) = @_;
my @terms = split(/\s+/,$termsstring);

my $parser = HTML::Parser->new(
api_version => 3,
start_h => [\&start,"self,tagname,attr"],
text_h => [\&text,"self,dtext"],
end_h => [\&end,"self,tagname"]);

my %include;
for my $html_file(@$files){
$string = '';
$parser->parse_file($html_file);

foreach my $term (@terms) {
$term = umlauts($term);
if ($string =~ /$term/) {
$include{$html_file} = 'yes';
last;
}
else {
$include{$html_file} = 'no';
}
}
}
return %include;
}

sub start{
my ($self,$tag,$attr) = @_;
if($tag eq 'div' && $attr->{class} eq 'scroll'){
$self->{search} = 1;
}
}

sub text{
my ($self,$dtext) = @_;
$string .= $dtext if($self->{search});
}

sub end{
my ($self,$tag) = @_;
if($tag eq 'div'){
$self->{search} = 0;
}
}

sub umlauts{
my ($term) = @_;
$term=~ s/&”/ä\;/g;
$term=~ s/¾/Ä\;/g;
$term=~ s/&–/ö\;/g;
$term=~ s/÷/Ö\;/g;
$term=~ s/&¸/ü\;/g;
$term=~ s/Ð/Ü\;/g;
$term=~ s/þ/ß\;/g;
return $term;
}
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/
Rocco
 2006-06-28 15:58
#8143 #8143
User since
2005-11-18
37 Artikel
BenutzerIn
[default_avatar]
EDIT: also die fehlermeldung ist leider noch da:
---------------------------
Microsoft Internet Explorer
---------------------------
search6.pl von www.lottermoser.at kann nicht übertragen werden.

Die Internetsite konnte nicht geöffnet werden. Sie ist entweder nicht verfügbar oder konnte nicht gefunden werden. Versuchen Sie es später erneut.
---------------------------
OK  
---------------------------

wenn man das 'my' bei nach dem foreach weglöscht kommen untenstehende fehlermeldungen. EDIT ende

ok ich hab jetzt also
my $string = '';

am anfang des scripts hinzugefügt,

was die verlagerung der fehlermeldung auf folgende zeilen zur folge hatte:

Global symbol "$term" requires explicit package name at /home/netzgrafik/www.lottermoser.at/test/scripts/search6.pl line 53.
Global symbol "$term" requires explicit package name at /home/netzgrafik/www.lottermoser.at/test/scripts/search6.pl line 54.
Global symbol "$term" requires explicit package name at /home/netzgrafik/www.lottermoser.at/test/scripts/search6.pl line 54.
Global symbol "$term" requires explicit package name at /home/netzgrafik/www.lottermoser.at/test/scripts/search6.pl line 55.

sobald ich allerdings
  my $term = '';
irgendwo (egal ob am anfang oder in einer funktion) einfüge kommt eine ganz kuriose browser fehlermeldung.
wo müsste das richtigerweise stehen?

momentanes script -> http://www.lottermoser.at/test/scripts/search7.txt\n\n

<!--EDIT|Rocco|1151496167-->
renee
 2006-06-28 16:17
#8144 #8144
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
aus:
Code: (dl )
1
2
       foreach $term (@terms) {
$term = umlauts($term);


musst Du
Code: (dl )
1
2
       foreach my $term (@terms) {
$term = umlauts($term);
machen...

Verrätst Du uns auch noch die "kuriose" Fehlermeldung??
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/
Rocco
 2006-06-28 16:36
#8145 #8145
User since
2005-11-18
37 Artikel
BenutzerIn
[default_avatar]
probiers aus -> http://www.lottermoser.at/test/searchtest.htm
das ist jetzt das originalscript von dir - mit foreach my $term.
wenn man das my weglässt, kommt man wieder auf die normalen fehlermeldungen siehe ein post über deinem.
Rocco
 2006-06-28 20:35
#8146 #8146
User since
2005-11-18
37 Artikel
BenutzerIn
[default_avatar]
es funktioniert genauso wie es soll juhuu, aber leider nur mit dem firefox :-((,
mit dem IE kommt dauernd diese "kuriose" meldung und zwar ab dem moment wo irgendwo im script my $term drinnensteht:


---------------------------
Microsoft Internet Explorer
---------------------------
search6.pl von www.lottermoser.at kann nicht übertragen werden.

Die Internetsite konnte nicht geöffnet werden. Sie ist entweder nicht verfügbar oder konnte nicht gefunden werden. Versuchen Sie es später erneut.

sehr dubios.
renee
 2006-06-28 20:58
#8147 #8147
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Komisch.... Da weiß ich auf Anhieb auch keine Lösung...
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/
esskar
 2006-06-28 21:03
#8148 #8148
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=renee,28.06.2006, 18:58]Komisch.... Da weiß ich auf Anhieb auch keine Lösung...[/quote]
ich schon.
versuch mal anstatt
Code: (dl )
print $cgi->header(type => 'text/plain');
lieber
Code: (dl )
print $cgi->header(-type => 'text/plain');
renee
 2006-06-28 21:16
#8149 #8149
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ups, richtig... Immer gut, wenn ein anderer Code-Reviews macht... ;)
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/
Rocco
 2006-06-29 12:00
#8150 #8150
User since
2005-11-18
37 Artikel
BenutzerIn
[default_avatar]
unglaublich *tränen aus den augen wisch* es funktioniert :D . danke.

trotzdem gibts noch ein paar hürden,
zum einen ist die ausgabe meilenweit entfernt, von der wie sie im ursprungsscript war.
hab mich da ein bischen gespielt damit, hab aber zuwenig durchblick um wieder den titel der html mit der suchausgabe zu verlinken und die ausgabe auf eine vorlage umzuleiten, wies beim alten script der fall war.
http://www.lottermoser.at/test/searchtest.htm
zum anderen wäre es noch super wenn bei der eingabe und suche nicht zwischen gross und kleinschreibung unterschieden wird.
renee
 2006-06-29 12:37
#8151 #8151
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);
use strict;
use warnings;
use CGI;
use File::Find;
use HTML::Parser;

my $cgi = CGI->new();
print $cgi->header(-type => 'text/plain');
my %params = $cgi->Vars();
my $string = '';
my $title = '';
my $basedir = '/home/netzgrafik/www.lottermoser.at/test/';
my $base_url = 'http://www.lottermoser.at/';
my $hp_title = 'Alu - Lottermoser';

# hier noch den Pfad zur Vorlage eintragen
my $template = '';

my @files = ();
find(\&find_files,$basedir);
my ($includes) = search($params{terms},\@files);
print_html($base_url,$template,$hp_title,$params{terms},$includes);

sub find_files{
push(@files,$File::Find::name) if(-f $File::Find::name && $_ =~ /\.htm$/);
}

sub print_found{
my ($base,$template,$title,$terms,$hashref) = @_;

my $content = '';
{
local $/;
open(my $fh,'<',$template) or die $!;
$content = <$fh>;
close $fh;
}

my $html = '<ul>';
for my $key(keys(%$hashref)){
$html .= '<li><a href="'.$base.$key.'">'.$hashref->{$key}."</li>\n";
}
$html .= qq~</ul><hr align="left" width="100%" size="2" noshade color="#00007F">\n
<font color="#00007F">Such Information:</font><p>
<ul>\n<li><b><FONT COLOR=#00007F>Suchbegriff:</FONT></b>~;

$html.= join(", ",split(/\s+/,$terms));

$html .= qq~<li><a href="$base">$title</a>\n</ul>
<hr align="left" width="100%" size="2" noshade color="#00007F">
<a href="http://www.netzgrafik.com/">netzgrafik.com</a>.\n~;

$content =~ s/\$Titel/$title/;
$content =~ s/\$Message/$html/;

print $content;
}

sub search{
my ($termsstring,$files) = @_;
my @terms = split(/\s+/,$termsstring);

my $parser = HTML::Parser->new(
api_version => 3,
start_h => [\&start,"self,tagname,attr"],
text_h => [\&text,"self,dtext"],
end_h => [\&end,"self,tagname"]);

$parser->{divs} = 0;

my %include;
for my $html_file(@$files){
$string = '';
$title = '';
$parser->parse_file($html_file);

foreach my $term (@terms) {
$term = umlauts($term);

# hier wurde noch das "i" angefügt für "ignore case" also
# matching ohne Berücksichtigung von Groß- und Kleinschreibung

if ($string =~ /$term/i) {
$include{$html_file} = $title;
last;
}
}
}
return \%include;
}

sub start{
my ($self,$tag,$attr) = @_;
if($tag eq 'div' && $attr->{class} eq 'scroll'){
$self->{search} = 1;
}
if($tag eq 'div' and $self->{search}){
$self->{divs}++;
}
if($tag eq 'title'){
$self->{title} = 1;
}
}

sub text{
my ($self,$dtext) = @_;
$string .= $dtext if($self->{search});
$title = $dtext if($self->{title});
}

sub end{
my ($self,$tag) = @_;
if($tag eq 'div' and $self->{search}){
$self->{divs}--;
}
if($self->{divs} == 0){
$self->{search} = 0;
}
if($tag eq 'title'){
$self->{title} = 0;
}
}

sub umlauts{
my ($term) = @_;
$term=~ s/&”/ä\;/g;
$term=~ s/¾/Ä\;/g;
$term=~ s/&–/ö\;/g;
$term=~ s/÷/Ö\;/g;
$term=~ s/&¸/ü\;/g;
$term=~ s/Ð/Ü\;/g;
$term=~ s/þ/ß\;/g;
return $term;
}


ungetestet!\n\n

<!--EDIT|renee|1151570374-->
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/
<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten



View all threads created 2006-06-23 16:05.