Avatar billede Slettet bruger
10. januar 2005 - 21:39 Der er 5 kommentarer og
1 løsning

tjekke en variabels indhold op mod array

Hej!

Jeg vil filtrere nogle URL's ifm. et caching system. Som det ser ud nu har jeg nedenstående:


$ignore_list = Array('index.php?pid=2','index.php?pid=3','index.php?pid=923');

$ignore_page = false;
for($i = 0; $i < count($ignore_list); $i++) {
$ignore_page = (strpos($page, $ignore_list[$i]) !== false) ? true : $ignore_page;
}

Denne skal tjekke om nogle URL's skal udelukkes, men problemet er at hvis jeg vil udelukke index.php?pid=2 så udelukkes alle andre der starter med 2, altså pid=219, pid=29818 osv.

Hvordan tjekker jeg det bedst?
Avatar billede iss Novice
11. januar 2005 - 02:04 #1
Avatar billede moocher Nybegynder
11. januar 2005 - 02:07 #2
$str = 'abcdef';
echo strlen($str); // 6

Tjek om de har samme længde
Avatar billede Slettet bruger
11. januar 2005 - 07:27 #3
Problemet er at $page godt kan være længere end elementerne i $ignore_list, så en simpel sammenligning vil fejle.

Derfor kan jeg hverken bruge in_array() eller strlen. Det bedste ville være at lade det fortsætte som nu, men så tjekke om der er flere tegn efter at strpos er kørt.

$page = 'http://www.enside.dk/enmappe/index.php?pid=202'; //fiktivt eksempel, laves udfra query streng

$ignore_list = Array('index.php?pid=2','index.php?pid=3','index.php?pid=923');

$ignore_page = false;
for($i = 0; $i < count($ignore_list); $i++) {
$ignore_page = (strpos($page, $ignore_list[$i]) !== false) ? true : $ignore_page;
}
Avatar billede Slettet bruger
11. januar 2005 - 16:09 #4
du kan jo bare først trække de 10 første tegn fra variablerne (index.php?)  med substr, og derefter tjekke om de er ens.. med in_array
Avatar billede Slettet bruger
11. januar 2005 - 16:10 #5
ellers kan du bruge $argv der finder alle $_GET[''] variabler der er sat
Avatar billede Slettet bruger
11. januar 2005 - 20:24 #6
Jeg løste det på denne måde:

$page = 'http://www.enside.dk/enmappe/index.php?pid=202'; //fiktivt eksempel, laves udfra query streng
$page = array_pop(explode('/', $page));
$ignore_list = Array('index.php?pid=2','index.php?pid=3','index.php?pid=923');
$ignore_page = false;
$ignore_page = (in_array($page, $ignore_list) !== false) ? true : $ignore_page;
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

IT-JOB