Avatar billede trophymanager Nybegynder
16. december 2005 - 12:00 Der er 12 kommentarer og
1 løsning

replace og wildcard meeen.

Hej Alle.

Jeg sidder og bakser med en streng der skal modificeres lidt. Det kan i teorien gøres ret nemt, men jeg mangler lidt.

Det drejer sig om at i strengen skal alle '(' erstattes med noget, bare ikke hvis der kommer et udråbstegn efter.

Fra et andet spørgsmål har jeg sakset følgende der skulle have noget med et wildcard at gøre, men jeg synes den virker ret sort.


$str2=preg_replace('/<br (.*?)>/i','<br \1/>',$str);

På forhånd tak :)
Avatar billede polle007 Nybegynder
16. december 2005 - 12:07 #1
prøv

$str2 = preg_replace("#\\([^!]#", "noget andet", $str);
Avatar billede trophymanager Nybegynder
16. december 2005 - 12:11 #2
hej polle - den er der næsten

borset fra at den æder det tegn der kommer efter ( - det er ikke meningen.
Avatar billede trophymanager Nybegynder
16. december 2005 - 12:28 #3
hov det har jeg selv fået rettet - smid et svar :)
Avatar billede polle007 Nybegynder
16. december 2005 - 12:33 #4
ok, en udgave hvor den ikke æder næste tegn =)

$str2 = preg_replace("#\\((?!!)#", "#", $str);
Avatar billede trophymanager Nybegynder
16. december 2005 - 12:38 #5
tak for det.

hvad betyder "#\\((?!!)#"? Det virker en smule sort.
Avatar billede trophymanager Nybegynder
16. december 2005 - 12:40 #6
Kunne nemlig også godt tænke mig at lave en magen til hvor det bare er med ) der skal erstattes på nær hvis der kommer endnu en ) efter - men jeg er ikke sikker på hvad der foregår i første led.
Avatar billede polle007 Nybegynder
16. december 2005 - 12:41 #7
# markerer blot start og slut på det regulære udtryk

Parenteser har en helt speciel betydning i regulære udtryk, så den skal escapes: \(

(?!en streng) betyder: match ikke, hvis denne streng står efter
Avatar billede trophymanager Nybegynder
16. december 2005 - 12:45 #8
ah tusind tak.
Avatar billede trophymanager Nybegynder
16. december 2005 - 12:50 #9
er der en ekvivalent til ?!

- altså en match kun?
Avatar billede polle007 Nybegynder
16. december 2005 - 12:53 #10
(?=en streng)
Avatar billede trophymanager Nybegynder
16. december 2005 - 13:01 #11
:)
Avatar billede trophymanager Nybegynder
16. december 2005 - 13:09 #12
kan man for eksempel skrive

"#\\((?!!||?!\()#"

altså at den ikke skal erstatte hvis det næste tegn er enten ! eller (
Avatar billede polle007 Nybegynder
16. december 2005 - 14:00 #13
#\\((?!!|\\()#
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