Avatar billede stigma Nybegynder
14. maj 2013 - 18:18 Der er 1 kommentar og
1 løsning

str_replace, preg_replace udskifter forkert match!

Jeg bliver ved med at rende ind i problemer med str_replace, når jeg skal udskifte dele af denne streng:
rooms.roomID = r_rooms.roomID


Jeg bruger følgende arrays til at udskifte dele af strengen

$match = Array
(
    [0] => rooms.roomID
    [1] => r_rooms.roomID
)

$replace = Array
(
    [0] => `rooms`.`roomID`
    [1] => `r_rooms`.`roomID`
)


Men resultatet bliver slet ikke som jeg forventer:
`rooms`.`roomID` = r_`rooms`.`roomID`


Det jeg så slet ikke forstår er, hvis jeg fjernet "r" i ordet rooms, så stregen ser således ud:
rooms.roomID = r_ooms.roomID

Så bliver mit resultat som jeg forventer, altså:
`rooms`.`roomID` = `r_ooms`.`roomID`


Jeg har prøvet at bruge preg_replace i stedet, denne laver samme fejl, og jeg ser kan virkelig ikke se hvorfor den gør det.

På forhånd tak for hjælpen!
Avatar billede stigma Nybegynder
14. maj 2013 - 18:22 #1
Hele metoden hvor jeg bruger dette, kan ses her:
http://pastebin.com/3dedapxV
Avatar billede stigma Nybegynder
14. maj 2013 - 19:23 #2
Nvm fandt ud af problemet!

Det er fordi str_replace matcher dele af at et ord også! Så jeg kan enten vælge og bytte om på rækkefølgen i mit $match og $replace array, eller bruge preg_replace og så omringe ordene med word boundaries (\b)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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