Schrift
[thread]8024[/thread]

regex und UTF-8: Abfrage die auch Umlaute erkennt

Leser: 3


<< >> 4 Einträge, 1 Seite
decoder
 2006-05-28 16:49
#66653 #66653
User since
2006-03-30
22 Artikel
BenutzerIn
[default_avatar]
hi,

Ich habe ein perl-script das in UTF-8 gespeichert ist.

es soll ein 2-stelliger String ($a kommt von CGI) kontrolliert werden ob nur Buchstaben drinnen vorkommen genau so wie man das mit \w macht.
Mit \w geht das aber leider nicht weil er zb; ö, ä, ü, ß, .. nicht als Buchstaben erkennt.

Im moment arbeite ich mit dieser Lösung (unten):
Ich wandle den zu ürberprüfenden String von UTF-8 in ISO um.

Ich kann mir nicht vorstellen das es da nichts besseres gibt :)

Bitte um eure Hilfe, dankend bernd.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $cgi = CGI->new();
my $a = $cgi->param('a');
print $cgi->header('text/html; charset=utf-8');

use Encode;
my $a_iso = $a;
Encode::from_to($a_iso, 'utf8','iso-8859-1');

if ($a_iso =~ /^\p{L}\p{L}$/g)
{
print "ok"; # funktioniert mit umlauten..
}
ptk
 2006-05-28 17:15
#66654 #66654
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du musst umwandeln, allerdings nur von utf-8 in das perl-interne Format. Also mit Encode::decode("utf-8", $data).
decoder
 2006-05-28 17:48
#66655 #66655
User since
2006-03-30
22 Artikel
BenutzerIn
[default_avatar]
super danke, funkt
:)

Code: (dl )
1
2
3
4
5
6
my $a_intern = Encode::decode('utf-8', $a);

if ($a_intern =~ /^\w\w$/g)
{
print 'ok';
}


mit "Locale" kann man sowas auch lösen oder sitze ich da jetzt im falschen schiff ?
nepos
 2006-05-28 19:12
#66656 #66656
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Laut der Doku muesste das mit locale gehen jo.
<< >> 4 Einträge, 1 Seite



View all threads created 2006-05-28 16:49.