Avatar billede zorkmontana Nybegynder
31. oktober 2008 - 15:10 Der er 8 kommentarer og
1 løsning

Splitning af header

Hej allesammen

Jeg har en lidt nederdrægtig header jeg leger med.
den ser noget lignende sådan ud

?q=Main:news,users;Menu:login,Menu,status;Bottom:banner;

denne skal så splittes i et array som kommer til skal komme til at se sådan ud:
q => array(
    [Main] => array (
              [0] => news
              [1] => users
              )
    [Menu] => array (
              [0] => login
              [1] => Menu
              [2] => status
              )
    [Bottom] => array (
              [0] => Banner
              )
    )

Jeg kan gøre det med en række loops men er næsten sikker på der er en nemmere måde måske med regs, men kan ikke rigtig gennemskue det. nogen der kan hjælpe eventuelt med lidt kode som kan hjælpe mig på vej?
Avatar billede jensgram Nybegynder
31. oktober 2008 - 15:37 #1
Tror jeg ville gøre det uden RegExps:

$q = array();
if (isset($_GET['q']) {
    $tmp = explode(';', $_GET['q']);
    foreach ($tmp as $item) {
        list($key, $vals) = split('[:,]', $tmp);
        $q[$key] = $vals;
    }
}

Utestet.
Avatar billede jensgram Nybegynder
31. oktober 2008 - 15:38 #2
Måske krydret med en:

if (empty($tmp)) ... i foreach.
Avatar billede jensgram Nybegynder
31. oktober 2008 - 15:40 #3
... og så kommer jeg til at tænke på, om list() nu også opfører sig som jeg antog. Ellers:

$q = array();
if (isset($_GET['q']) {
    $tmp = explode(';', $_GET['q']);
    foreach ($tmp as $item) {
        if (!empty($tmp)) {
            list($k, $v) = explode(':', $tmp);
            $q[$k] = explode(',', $v);
        }
    }
}
Avatar billede zorkmontana Nybegynder
31. oktober 2008 - 16:21 #4
takker jeg vil lige se lidt paa det
Avatar billede zorkmontana Nybegynder
31. oktober 2008 - 16:34 #5
jensgram -> Nope ser ikk ud til list opføre sig ordenligt ;)

du kan se resultatet her :
http://dev.frostdrake.tk/index.php?q=Main:news,users;Menu:login,Menu,status;Bottom:banner;
Avatar billede jensgram Nybegynder
31. oktober 2008 - 21:16 #6
Nej, jeg havde da også tænkt med røven :)

Testet:

$q = array();
if (isset($_GET['q'])) {
    $tmp = explode(';', $_GET['q']);
    foreach ($tmp as $item) {
        if (!empty($item)) {
            list($k, $v) = explode(':', $item);
            $q[$k] = explode(',', $v);
        }
    }
}
Avatar billede zorkmontana Nybegynder
01. november 2008 - 10:00 #7
var også hvad jeg lige fandt ud af her til morgen ;)
Super nice og takker...

havde to loops før som en gang imellem havde nogle tomme arrays, addRandom()
var det noget med nogle point til mesteren ?
Avatar billede jensgram Nybegynder
01. november 2008 - 11:59 #8
"Mesteren"? Hmmm :)

God weekend.
Avatar billede jensgram Nybegynder
01. november 2008 - 12:00 #9
!
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