26. august 2008 - 20:06
Der er
12 kommentarer og 1 løsning
Regex og backreferences
Hej Jeg har følgende regex: preg_replace("/'?%s'?/", $replace, $str, 1); Den skal så gerne udvides så at den også tager og erstatter "-tegn, men hvordan kan jeg lave det? Havde tænkt mig noget i stil med dette: preg_replace("/(['\"])?%s\1/", $args[$i], $sql, 1); Det virker bare ikke hvis der ikke er ' eller ". Hvordan kan det ellers laves? Det skal være det samme tegn der står bagefter %s som før, der erstattes. -Morten
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
26. august 2008 - 20:14
#1
Hvad er det du gerne vil opnå ?
26. august 2008 - 20:19
#2
Prøv med \\1 eller $1 :)
26. august 2008 - 20:41
#3
vil gerne have at man kan skrive f.eks. "%s" eller '%s' og den så erstatter det med en værdi. Det ligger inde i en funktion
26. august 2008 - 20:55
#4
Er det så ikke noget ala: '/["\']?%s["\']?/' Den vil erstatte '%s' og "%s"
26. august 2008 - 21:01
#5
men den skal ikke erstatte '%s" Hvilket den gør nu.
26. august 2008 - 21:02
#6
Mit forslag virker.
26. august 2008 - 21:04
#7
Illustration: $txt = <<<EOT en 'to' tre "fire" 'fem "seks" syv' EOT; echo preg_replace("#(['\"])(.*?)\\1#", "----\\2----", $txt); returnerer efter hensigten en ----to---- tre ----fire---- ----fem "seks" syv----
26. august 2008 - 22:10
#8
<ole> coderdk >> er hensigten mon ikke, at "seks" skal være ----seks----? Ellers forstår jeg ikke hensigten =) /mvh </bole>
27. august 2008 - 00:09
#9
olebole, Det tror jeg ikke, for fem "seks" syv er inde i ' ;) Men det kan vel være han har formuleret spørgsmålet forkert, selvom han lader til at forstå hvad hans backreference skal gøre... Anyway, hvor jeg har .*? har han %s så det er nok ikke relevant ;)
27. august 2008 - 07:36
#10
Det skal erstattes hvis det står lige op til, altså følgende skal erstattes: "%s" men ikke " %s" Men har ikke lige haft tid til at prøve det af, men har jeg senere idag
27. august 2008 - 11:37
#11
dette regex virker: !/([\"']?)%s\\1/" Hvorfor skal det være \\1 og ikke bare \1, er det fordi det escapes?? Tak for hjælpen allesammen. Coderdk, smid venligst et svar.
27. august 2008 - 11:48
#12
Yep det er pga escape, så \\1 eller $1 :)
27. august 2008 - 11:58
#13
okay, viste jeg ikke den gjorde
Vi tilbyder markedets bedste kurser inden for webudvikling