Avatar billede Slettet bruger
13. oktober 2004 - 12:23 Der er 9 kommentarer og
1 løsning

Kan ikke matche på 2 tegn

Hej, jeg sidder godt nok og bruger Reg.exp. i PHP (men det er vel egentligt underordnet).

Mit problem ligger i at jeg prøver at splitte en streng (preg_split) ved en regular expression (hver gang den enten finder et ; (semikolon) eller et , (komma) skal den splitte), jeg har selv kommet frem til følgende reg.exp.-udtryk, men det virker overhovedet ikke, den splitter INGENTING...

"[;,]"

Håber i kan hjælpe mig, er på MEGET bar bund. På forhånd tak... :-)
Avatar billede Slettet bruger
13. oktober 2004 - 12:26 #1
Hov, jeg omdefinerer lige reglerne, fandt lige ud af at min logik er HELT ude af vinduet.

Strengen skal splittes hver gang der forekommer et ; eller et , men KUN hvis de begge 2 eksisterer i strengen, og det skal ikke splittes hvis det er inde i en parantes.
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 12:28 #2
Det virker da fint:

  $a="Her er der, jo nemlig, en lang streng; saadan set";
                                                                                  $s=split("[;,]",$a);
                                                                                  print_r($s);

udskriver:

Array
(
    [0] => Her er der
    [1] =>  jo nemlig
    [2] =>  en lang streng
    [3] =>  saadan set
)
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 12:29 #3
Ok, men kan du ikke komme med nogle eksempler på hvad du vil?
Avatar billede Slettet bruger
13. oktober 2004 - 12:36 #4
OK, fandt lige ud af at man ikke skal bruge preg_split, men derimod split-funktionen som du brugte... dummebøde til mig :-|

Jo, jeg kan da sagtens komme med et eksempel...

Jeg itererer igennem $_SERVER-array'et, og splitter dette op for at opstille det pænt (markup), men når man støder på "(et eller, andet tekst; bla bla)" skal teksten i strengen ikke splittes op, selvom der er , eller ; i parantesen.
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 12:39 #5
Syntaksen er lidt anderledes for preg-split, men den kunne sagtens bruges.
Du må gerne komme med konkrete eksempler.
Avatar billede Slettet bruger
13. oktober 2004 - 12:47 #6
Denne her streng skal splittes op ved ; og ,

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Men denne her streng skal ikke splittes op ved ; og , da den har ( ) omklamret.

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 13:09 #7
Hvad mener du så med "...men KUN hvis de begge..." ?

Og den øverste af dine eksempler skal vel ikke splittes ved ";",
da text/plain;q=0.8 hører sammen?
Avatar billede Slettet bruger
13. oktober 2004 - 13:27 #8
OK, jeg havde da vist glemt at få taget højde for det...

Lad os nu sige at jeg vil ha' splittet en streng kun ved , men der må ikke være være paranteser omkring ,

Altså, strengen "Dette er en, meget, meget, meget (og, egentlig dum) test, som er grammatisk ukorrekt" skal blive til strengene:

"Dette er en"
"meget"
"meget"
"meget (og, egentligt dum) test"
"som er grammatisk ukorrekt"
Avatar billede Slettet bruger
18. oktober 2004 - 11:53 #9
hej erik, har du glemt alt om mig - eller skal jeg prøve at omformulere endnu en gang?
Avatar billede Slettet bruger
21. oktober 2004 - 09:14 #10
Nå, jamen så lukker jeg her... du må lige sige til hvis du vil ha' nogle point for din indsats - under alle omstændigheder skal du ha' tak for hjælpen.
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
Kurser inden for grundlæggende programmering

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