Avatar billede kgp43 Nybegynder
24. oktober 2005 - 12:09 Der er 10 kommentarer og
1 løsning

Efterlader et tegn efter str_replace

Hejsa,

Hvorfor efterlader følgende kode et "\" ved "http:\\" ?

$website = str_replace("http:\\", "", $website);
Avatar billede ldrada Nybegynder
24. oktober 2005 - 12:53 #1
Fordi \ er en escape character.
Den rigtige kode er således:
$website = str_replace("http:\\\\", "", $website);

Det vil sige, at du escaper \ med \. Hvis du siger "echo "http:\\", så vil den echo'e "http:\".
For at den skal echo'e "http:\\" skal du skrive "echo http:\\\\".
Avatar billede ldrada Nybegynder
24. oktober 2005 - 12:54 #2
PS.
Når du skriver HTTP://HJEMMESIDE.COM, skal det være med "/", og ikke "\".
Avatar billede Slettet bruger
24. oktober 2005 - 12:56 #3
<?

$website = 'http:\\dr.dk';

$website = str_replace("http:\\", "", $website);

echo $website;

?>

fungerer fint her.

Men nu er du vel opmærksom på at dine \\ skal vende // ikke?

Altså at det skal være http://dr.dk og ikke http:\\dr.dk

:)
Avatar billede ldrada Nybegynder
24. oktober 2005 - 12:56 #4
PPS.
Check PHP manualen for funktionerne addslashes() og stripslashes().
Især alt brugerinput bør gøre brug af addslashes() før alt andet.
Avatar billede kgp43 Nybegynder
24. oktober 2005 - 13:17 #5
jo, og det er det jeg prøver at rette (bruger input).

idrada: bruger denne funktion

function my_addslashes($streng){
  return get_magic_quotes_gpc()?$streng:addslashes($streng);
}

$title = my_addslashes($title);
Avatar billede erikjacobsen Ekspert
24. oktober 2005 - 13:19 #6
Og det hedder jo ikke http:\\ men http://
Avatar billede ldrada Nybegynder
24. oktober 2005 - 13:28 #7
kgp43:
Hvis nedenstående ikke løser dit problem, vil jeg gerne bede dig om at give mig en eksempelkode (inklusive koden til my_addslashes) som jeg kan bruge til at forstå situationen i helhed.

Hvis my_addslashes efterlader dig med $website = "http:\\\\";, og du derefter putter $website gennem
str_replace("http:\\", "", $website);
så vil $website = "http:\\", fordi du kun fjernede ET \
Det vil så printe som "http:\"
Avatar billede ldrada Nybegynder
24. oktober 2005 - 13:30 #8
Rettelse: (undskylder for de mange indlæg)

...Så vil $website = "\\hjemmeside.dk" fordi du kun fjernede ET \
Det vil så printe som "\hjemmeside.dk"
Avatar billede kgp43 Nybegynder
24. oktober 2005 - 13:34 #9
dette virker:

$website = str_replace("http:\\\\\\", "", $website);

- takker for hjælpen :)
Avatar billede ldrada Nybegynder
24. oktober 2005 - 13:38 #10
Burde der ikke kun være fire slashes i dét som virker? :P

Det var så lidt ;)
Avatar billede kgp43 Nybegynder
24. oktober 2005 - 13:41 #11
nope, hvis jeg kun har fire så efterlader den stadig et slash.
tror det skyldes min my_addslashes funktion
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