Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5697[/thread]

Teil von URL auslesen

Leser: 1


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
stb2050
 2003-09-07 18:38
#85217 #85217
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

ein Benutzer ruft eine Seite z.B. so auf:

http://www.test.de/testuser

Meine Syntax soll nun das "testuser" als $u erkennen. Momentan mache ich das so:

Code (perl): (dl )
1
2
$url = $ENV{REQUEST_URI};
($u) = $url =~ /\/([^\/]+)$/;


Problem ist nun, wenn der Benutzer über http://www.test.de/testuser/ aufruft, also so, dass noch ein Slash hinten ist. Wie kann ich meinen Code so ändern, dass es auch korrekt funktioniert, wenn der Slash hinten ist? Es soll trotzdem nur "testuser" in $u stehen, und nicht "testuser/".

Viele Grüße & vielen Dank
Steffen
Ishka
 2003-09-07 18:45
#85218 #85218
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
$u=~s#/$##; dahinter
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
format_c
 2003-09-07 18:45
#85219 #85219
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hi probier mal:
Code (perl): (dl )
($u) = $url =~ /\/([^\/]+)\/?$/;


Gruß Alex
stb2050
 2003-09-07 19:03
#85220 #85220
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
[quote=format_c,07.09.2003, 16:45]Hi probier mal:
Code (perl): (dl )
($u) = $url =~ /\/([^\/]+)\/?$/;


Gruß Alex[/quote]
Danke euch :-)

Funktioniert hervorragend.

Viele Grüße
Steffen
pq
 2003-09-07 19:06
#85221 #85221
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=format_c,07.09.2003, 16:45]Hi probier mal:
Code (perl): (dl )
($u) = $url =~ /\/([^\/]+)\/?$/;
[/quote]
und da wir ja in perl ein anderes zeichen als regex-begrenzer
benutzen dürfen, schreiben wir das doch mal etwas schöner:
Code (perl): (dl )
($u) = $url =~ m|/([^/]+)/?$|;
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
SirLant
 2003-09-07 19:32
#85222 #85222
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Am besten nehmen wir aber ein Bezeichner, bei dem das
Dollarsymbol+Zeichen keine Variable darstellt, wie:
Code (perl): (dl )
($u) = $url =~ m%/([^/]+)/?$%;
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
format_c
 2003-09-07 19:37
#85223 #85223
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Macht es nicht.
Das m setzt den Begrenzer.
Das $| würde nur, da es nicht eindeutig ist ob Variable oder RegEx Operator, mit \Q$|\E interpoliert werden.

Gruß Alex
SirLant
 2003-09-07 19:58
#85224 #85224
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Schon klar, aber ich vermeide es möglichst, deshalb :)
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Ishka
 2003-09-07 20:07
#85225 #85225
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
erstens ist $% auch eine Variable und zweitens $/ auch ;)
ich nehm meist # als Trennzeichen, aber das ist wohl Geschmackssache.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
SirLant
 2003-09-07 20:15
#85226 #85226
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
was steht denn in $% ?
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2003-09-07 18:38.