Thread mein script verweigert ignore_case in utf-8 pattern matching (23 answers)
Opened by technix at 2013-06-02 16:19

technix
 2013-06-03 21:38
#167931 #167931
User since
2013-06-02
10 Artikel
BenutzerIn
[default_avatar]
So, hier ein völlig versimpeltes Beispiel:
http://www.codebase.at/bb.pl
Bitte ausprobieren, man versteht's gleich.
Script ist utf8 codiert, Daten sind utf-8 auch die Eingabe verlangt utf-8
Code (perl): (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
#!/usr/bin/perl -w

use CGI::Carp qw( fatalsToBrowser );
use Encode qw(encode decode); $enc = 'utf-8';

$infile = "bb.txt";
$in{'bez'}="Rad";

&param_in;

print qq*Content-type: text/html; charset=utf-8\n
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<form method="GET" action="bb.pl" name="ArtSuch" accept-charset="UTF-8">
  <input type="hidden" name="dummyChar" value="♥" /> <!--wegen IE utf-8 problem-->
  Bitte nach deutschen Umlauten (groß/kleingeschrieben) suchen<br>
 Suchtext <input name="bez" size="10" value="" maxlength="3" type="text"></form>*;

print "gesucht wird: $in{'bez'}<br><br>Ergebnis:<br>";

if (-T $infile) { open(ZEUG, "<$infile") || die "keine Textdatei\n";}

while(<ZEUG>) {
  $testline=$_;
  if ($testline  =~ m/$in{'bez'}/i)
  { print "$testline <-- ich hab ein &quot;$in{'bez'}&quot; gefunden!<br>"; } 
  else 
  { print "$testline<br>"; }
}

print qq*<br>Eine Suche nach F findet alle 3 F (groß und klein)<br>
leider ist das bei den Umlauten nicht so"*;

exit(0);

#----------------------------------------------
sub param_in {
  if ($ENV{'REQUEST_METHOD'} eq "GET") {
    $buffer = $ENV{'QUERY_STRING'}; }
  else { 
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
  @nvpairs = split(/&/,$buffer);
  foreach $pair (@nvpairs) { 
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $in{$name} = $value;
  }
}

Ich entwickle mit perl 5.10.0, Produktion ist per 5.8.8, coding passiert meist remote auf einem CentOS 5.9 & 6.3 Linux.

Alle Eure Vorschläge werde ich gleich ausprobieren.
Und jetzt warte ich auf Eure Kopfnüsse :-)

View full thread mein script verweigert ignore_case in utf-8 pattern matching