Avatar billede human Nybegynder
11. april 2004 - 23:38 Der er 23 kommentarer og
1 løsning

Funktionen explode

Jeg får 1 URI parameter som hedder CMD.
I CMD er der en streng af værdier, de værdier skal deles op i forskellige variabler. Mit problem er bare, at jeg ikke ved hvilke værdier det er, altså de bliver ved med at ændre sig.

Jeg har kigget lidt på dette stykke kode:

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

Men her ved man jo nøjagtig hvad $pizza indeholder. $Pizza her er så min $CMD.

En der kan hjælpe mig med det?
Avatar billede dennismp Nybegynder
11. april 2004 - 23:42 #1
lad og sige at du bruger
index.php?CMD='pizza1 slice2 nogetandet';

så skal dit script se sådan ud:
<?php
$cmd = $_GET['CMD'];

$parts = explode(' ',$cmd);
foreach($parts as $part)
  print "$part<br />\";
?>
Avatar billede dennismp Nybegynder
11. april 2004 - 23:42 #2
Var det, det du manglede?
Avatar billede human Nybegynder
11. april 2004 - 23:50 #3
Det tror jeg det var ja! :)

Så er der lige en ting mere (skal nok smide et par point mere).

Lad os sige jeg har en variabel der indeholder det her:

Date:2003/11/28

Hvordan kan jeg så få den til at fjerne Date: og smide resten ind i en ny variabel?
Dette skal forresten gøres med 10 forskllige variabler. Hvor på hver af dem der skal fjernes:
Det-der-står-foran:

Så det efter : skal ind i en ny variabel hver gang? Kunne forestille mig en smart funktion?
Avatar billede human Nybegynder
11. april 2004 - 23:55 #4
Hvis det altså kan lade sig gøre.
Avatar billede martinbk Nybegynder
11. april 2004 - 23:57 #5
$streng = substr($orgstreng, strpos($orgstreng, ":")
Avatar billede martinbk Nybegynder
11. april 2004 - 23:57 #6
argh

$streng = substr($orgstreng, strpos($orgstreng, ":"));
Avatar billede human Nybegynder
12. april 2004 - 00:00 #7
Okay.. Mange tak..

Har lige set et problem med den funktion du lavede dennismp.

På den måde der ligger det hele i $part.

Værdierne skal smides ind i hver sin variabel. Hver værdi skal nemlig smides ind i hver sit felt i et tabel i en db.
Avatar billede human Nybegynder
12. april 2004 - 00:02 #8
Holybull:

Dvs. Hvis jeg har denne variabel:

$date som indeholder Date:2003/11/28

Så siger jeg:
$date = substr($orgstreng, strpos($orgstreng, ":"));

Efter dette inderholder $date
2003/11/28

Korrekt?
Avatar billede dennismp Nybegynder
12. april 2004 - 00:02 #9
http://dennis.moellegaard.dk/v4/php/488276.php?cmd[]=Date:2/32-3&cmd[]=asdfa:aa

du kan tilføje ligeså mange cmd[] du har lyst til, den tager dem een efter een.

source:
http://dennis.moellegaard.dk/v4/php/488276.php?source=1
Avatar billede martinbk Nybegynder
12. april 2004 - 00:03 #10
funktionen explode retunere et array (i ovenstående eksempel $parts) der løbes så igennem array'et med foreach hvilket vil gøre at parts hver gang bliver forskellig, du kan også blot tilgå array'et sådan her:

$parts[0]; <- det første ord
$parts[1]; <- det andet ord
$parts[2]; <- det tredje ord

osv.
Avatar billede martinbk Nybegynder
12. april 2004 - 00:04 #11
$date = substr($date, strpos($date, ":"));

vil give dig alt efter kolon'et
Avatar billede human Nybegynder
12. april 2004 - 00:07 #12
holybull: Nå ja, self. Opretter lige et spm. så du får poing.

dennismp: Du har smækket de 2 funktioner sammen der eller?

Den ser rigtig ud.. Det skal bare ikke udskrives :)
Avatar billede martinbk Nybegynder
12. april 2004 - 00:07 #13
human nej tak ikke nødvendigt :)
Avatar billede dennismp Nybegynder
12. april 2004 - 00:10 #14
Jeg havde ikke set holybulls indlæg før det var for sent :). Det gør egenlig det samme, borset fra at jeg har pakket det lidt ind.
Avatar billede martinbk Nybegynder
12. april 2004 - 00:11 #15
dennismp .. jeg er datalogi-stud. .. kort og kontant uden kommentare ;)
Avatar billede human Nybegynder
12. april 2004 - 00:12 #16
Okay dennismp

Med lad os sige at værdierne skal smides i en tabel efter det foran : er fjernet.

Hvad hedder variablerne så?
$cmd[0];
$cmd[1];

osv.?
Avatar billede dennismp Nybegynder
12. april 2004 - 00:15 #17
holybull: Jeg er færdig til sommer (bare med dat som overbygning til datamatiker). :)

human: jeg har rettet mit eksempel fra før. Nu ligger den resultatet i $result.. Og de hedder $result[0] .. $result[1].. osv
Avatar billede human Nybegynder
12. april 2004 - 00:18 #18
Du skal have mange tak :)
Avatar billede human Nybegynder
12. april 2004 - 00:21 #19
Der er dog en lille ting jeg har lagt mærke til. I din URL står der:
cmd[]=Date:2/32-3&cmd[]=asdfa:aa

Altså cmd[]. Hvis den tilfældigvis bare hedder cmd. Hvad sker der så?
Avatar billede dennismp Nybegynder
12. april 2004 - 00:25 #20
Den ville ignorerer det. Har lige opdateret scriptet, så den også kan klare een fx:
index.php?cmd=dato:noget
og så stadig:
cmd[]=Date:2/32-3&cmd[]=asdfa:aa
Avatar billede human Nybegynder
12. april 2004 - 00:30 #21
Takker.. HAr lige testet det.

Hvis den bare hedder cmd. Udskriver den kun det sidste resultat..
Men udskriver alle hvis den hedder cmd[].
:
$result = array();
if( isset($_GET['cmd']) ) {
    if( is_array($_GET['cmd']) )
        $cmds = &$_GET['cmd'];
    else
        $cmds = array($_GET['cmd']);

    foreach($cmds as $cmd) {
        $pos = strpos($cmd,':');
        if( $pos ) {
            // Fjern alt før :
            $cmd = substr($cmd,$pos+1);
        }
        $result[] = $cmd;
        print "$cmd<br />\n";
    }
}
Avatar billede dennismp Nybegynder
12. april 2004 - 00:38 #22
Det er fordi at
index.php?cmd[]=a&cmd[]=b

bliver lavet om til et array der består af a og b (af php)

index.php?cmd=a&cmd=b
bliver derimod ikke lavet om, andet end cmd bliver til den sidste. Hvis du gerne vil have den feature, så kan jeg da godt lave det. Men normalt ville man bare bruge "cmd[]" og lade php gøre arbejdet.
Avatar billede human Nybegynder
12. april 2004 - 00:41 #23
Hmm ja.. Er det sådan jeg kan kontakte dig senere.. Det er nemlig en anden der laver en windows applikation, som sender det. Så hører jeg lige ham ad. Kan du ik smide din mail adresse eller msn. Så opretter jeg spg. herinde hvor du smider koden, så alle kan få noget ud af det. Så du også får dine poing.
Avatar billede dennismp Nybegynder
12. april 2004 - 00:44 #24
Joda, dennis@moellegaard.dk
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