Avatar billede kjeldsted Novice
28. december 2008 - 22:38 Der er 6 kommentarer og
1 løsning

Hjælp til reg_exp.

Hej.

Har har et lille problemer jeg håber I vil hjælpe med.

Jeg har en variabel med en række ord, adskilt med mellemrum (altså ' '). Jeg ønsker så at få udskiftet dette mellemrum med '%' MEDMINDRE at en række ord er omgivet af (").

Hvis vi fx har variablen:

næstved fodbold "tabte kamp"

skal denne laves om til:

næstved%fodbold%tabte kamp%

Jeg kan sagtens få indsat de mellemrum der skal være, men det kniber med at fjerne dem mellem (") tegn.

Håber I kan hjælpe.
På forhånd tak.
Avatar billede arne_v Ekspert
28. december 2008 - 22:48 #1
Jeg tvivler på at regex er det rette valg.

Det virker helt ligetil at løbe strengen igennem i en løkke og så switch på char: ved " så
skifter man tilstand og ved mellemrum erstatter man med % hvis indeni quotes og med alt andet udskriver man bare.
Avatar billede kjeldsted Novice
28. december 2008 - 22:51 #2
Hm. Det lyder faktisk meget fornuftigt.

Jeg kunne vel ikke få en smule hjælp til det dér med switch? Har nemlig ikke så godt styr på dét...
Avatar billede arne_v Ekspert
28. december 2008 - 22:53 #3
<?php
function special_subst($s) {
    $res = '';
    $inq = false;
    for($i = 0; $i < strlen($s); $i++) {
        switch($s[$i]) {
            case '"' :
                $inq = !$inq;
                $res .= '"';
                break;
            case ' ' :
                if($inq)
                    $res .= ' ';
                else
                    $res .= '%';
                break;
            default:
                $res .= $s[$i];
                break;
        }
    }
    return $res;
}

echo special_subst('næstved fodbold "tabte kamp"');
?>
Avatar billede arne_v Ekspert
28. december 2008 - 22:54 #4
Det er ikke speciel elegant kode (det ligner C !), men logikken er til at forstå.
Avatar billede kjeldsted Novice
28. december 2008 - 22:57 #5
Med en lille ændring virker det jo perfekt... Mange tak...

Smid et svar hvis du ønsker point (kan ikke huske om du "samler")...
Avatar billede kjeldsted Novice
28. december 2008 - 22:59 #6
Faktum er jo at det virker :-)
Avatar billede arne_v Ekspert
28. december 2008 - 23:00 #7
svar
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