Avatar billede groyk Novice
26. juli 2010 - 15:06 Der er 5 kommentarer og
1 løsning

extract function string

Hej Experter

Er ikke lige den skarpeste til reg ex.

Men hvordan eksploder jeg følgende streng til variabler?

eksempel på funktions streng.

min_funktion(tekst, 1, teks\,t, tekst);

Nu kunne jeg godt tænke mig at lave ovenstående linie om til noget ala.

$function = array([0] => "min_funktion", [1] => "tekst",
                  [2] => "1", [3] => "teks,t",
                  [4] => "tekst")

Kan dette gøres rimeligt simpelt?

Burde jo ikke være det store problem med regex. eller lign.
Avatar billede zynzz Praktikant
26. juli 2010 - 17:06 #1
$function[0]($function[1],$function[2]);

Ville være mit bud..
Avatar billede zynzz Praktikant
26. juli 2010 - 17:10 #2
Jeg fik ikke læst dit indlæg korrekt, ja du har ret det ville kunne løses med regex...
Avatar billede arne_v Ekspert
31. juli 2010 - 21:16 #3
Jeg synes at problemet driller lidt i regex, så mit forslag er en gammeldags parsing:

function parse($s) {
    $buf = '';
    $lastesc = false;
    for($i = 0; $i < strlen($s); $i++) {
        switch($s[$i]) {
            case '(':
                $func = trim($buf);
                $buf = '';
                break;
            case ')':
            case ',':
                if(!$lastesc) {
                    $args[] = trim($buf);
                    $buf = '';
                } else {
                    $buf .= $s[$i];
                    $lastesc = false;
                }
                break;
            case '\\':
                $lastesc = true;
                break;
            default:
                $buf .= $s[$i];
                $lastesc = false;
                break;
        }
    }
    echo $func . ":\r\n";
    foreach($args as $arg) {
        echo '  ' . $arg . "\r\n";
    }
}
Avatar billede groyk Novice
31. juli 2010 - 22:17 #4
Hej Arne

Ligner lidt den løsning jeg selv startede med. Din kode er dog mere overskuelig.

Venligst smid et svar som tak for hjælpen.
Avatar billede arne_v Ekspert
31. juli 2010 - 22:34 #5
OK
Avatar billede arne_v Ekspert
31. juli 2010 - 22:35 #6
Bemærk at hvis koden skal være robust overfor syntax fejl, så skal dere teste noget mere (koden ovenfor går i kage ved komma i funcktions navn etc.).
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