Avatar billede exp Juniormester
21. juli 2004 - 00:15 Der er 4 kommentarer og
1 løsning

script der henter data efter / i domæne.ext/noget

Halløj folkens,

har fået alle tiders sjove idé, men vil ikke røbe så meget ;-)

Jeg er verdens dårligste til regular expressions, derfor vil jeg høre, om nogen kunne strikke verdens hurtigste script sammen.

Det skal gøre følgende:

1. Hente alt efter "/" i adressen. Adressen vil se sådan ud: domæne.ext/noget, hvor "noget" kan være:
- kun tal, fx 123
- kun små bogstaver, fx abc
- bogstaver, efterfulgt af tal, fx a12
"noget" kan til gengæld _ikke_ være:
- tal, efterfulgt af bogstaver, fx 12a

2. Alt efter hvilken type det er, skal scriptet køre en kommando (fx inkludere en side, viderestille eller noget helt tredje)

2.1 Hvis typen er a12, skal den efterfølgende dele "a12" op, så der er en variabel med bogstav(er) og en variabel med tal, fx var['bogst']=a og var['tal']=12

3. I situationer, hvor der indgår tegn der ikke er 0-9 & a-z, fx .,-_/ etc, skal der også kunne køres en kommando, igen fx inkludere en side, viderestille osv

Nogen der kan fikse det?

Jeg vil lige pointere, at hastighed i scriptet er essentiel!
Avatar billede coderdk Praktikant
21. juli 2004 - 03:05 #1
Hmm intet testet, men noget i stil med dette.

Din .htaccess i roden:

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ script.php?path=$1

script.php:

<?php

  $param = $_GET['path'];

  $target = 'defaultside.php';

  if ( preg_match( "/^([a-z]+)([0-9]+)$/", $param, $matches ) )
  {
      $var['bogst'] = $matches[1];
      $var['tal'] = $matches[2];
      $target = 'bogst_tal.php';
  }
  elseif ( preg_match( "/^([0-9]+)([a-z]+)$/", $param, $matches ) )
  {
      $var['bogst'] = $matches[2];
      $var['tal'] = $matches[1];
      $target = 'tal_bogst.php';
  }

  require( $target );

?>
Avatar billede coderdk Praktikant
21. juli 2004 - 03:13 #2
Jeg tror alt kan klares i .htaccess med mod_rewrite:

RewriteEngine On
RewriteBase /

RewriteRule ^([a-z]+)([0-9]+)$ bogst_tal.php?bogst=$1&tal=$2 [L]

RewriteRule ^([0-9]+)([a-z]+)$ tal_bogst.php?bogst=$2&tal=$1 [L]

RewriteRule ^(.*)$ alt_andet.php?path=$1 [L]
Avatar billede exp Juniormester
21. juli 2004 - 08:41 #3
Hvad så hvis det kun er tal i adressen?

Er det så:

if ( preg_match( "/^([0-9]+)$/", $param, $matches ) )

?
Avatar billede coderdk Praktikant
21. juli 2004 - 16:39 #4
exp, Yeps :)
Avatar billede exp Juniormester
07. oktober 2004 - 20:51 #5
Whoooops - havde vist lige glemt denne - har ikke testet det endnu, men hva' faen... knock yourself out :-D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester