/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Erstat $ med \$
Fra : Flemming Joensson


Dato : 19-03-03 19:57

Hvordan får jeg lige den erstatning til at virke?

Jeg har prøvet med følgende:

$cleanString = str_replace("$","\$",$data);
$cleanString = str_replace("\$","\\$",$data);

Jeg mener helt bestemt at jeg har erstattet dollartegn før med
str_replace. Hvad er det lige jeg gør galt?

Mvh.
Flemming

--
Hvis du vil svare per e-mail skal "fjerndette." fjernes fra
mailadressen.


 
 
Niels Andersen (19-03-2003)
Kommentar
Fra : Niels Andersen


Dato : 19-03-03 20:08

Flemming Joensson wrote in <Xns9343CAF34DE17joenssoncsaucdk@130.225.247.90>:
> $cleanString = str_replace("$","\$",$data);

Det ser rigtigt ud.

> $cleanString = str_replace("\$","\\$",$data);

Hvad den så skulle gøre godt for ved jeg ikke. Prøv at fjerne den.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Niels Andersen (19-03-2003)
Kommentar
Fra : Niels Andersen


Dato : 19-03-03 20:23

Niels Andersen wrote in <2658351.vdf6oYyRer@home.myplace.dk>:
>> $cleanString = str_replace("$","\$",$data);
> Det ser rigtigt ud.

Hov, egentlig ikke. :)

Dollar-tegn i double-quotes betyder noget specielt. Prøv med single-quotes i
stedet:

$cleanString = str_replace('$','\$',$data);

>> $cleanString = str_replace("\$","\\$",$data);

Den forstår jeg til gengæld stadig ikke.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Mads Lie Jensen (19-03-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 19-03-03 22:32

On Wed, 19 Mar 2003 20:22:45 +0100, Niels Andersen
<niels-usenet@myplace.dk> wrote:

>>> $cleanString = str_replace("\$","\\$",$data);
>
>Den forstår jeg til gengæld stadig ikke.

Er den ellers ikke ret lige ud ad landevejen?
$ i double-quotes skal escapes, altså er der en \ foran første gang for
at finde alle $-tegn. Anden gang skal der indsættes en \ efterfulgt af
et $, $ skal stadig escapes, altså en \ foran.

Så kan jeg ikek huske om en \ også skal escapes, i så fald skal der stå
"\\\$" anden gang...

...eller sidder jeg bare og vrøvler?

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Lær af andres fejl
- du lever alligevel ikke længe nok til selv at prøve dem alle.

Flemming Joensson (19-03-2003)
Kommentar
Fra : Flemming Joensson


Dato : 19-03-03 23:07

Mads Lie Jensen <mads@gartneriet.dk> wrote in
news:i9oh7vsci9n4st0vvhvk8gc313nskfujnv@4ax.com:

> Er den ellers ikke ret lige ud ad landevejen?
> $ i double-quotes skal escapes, altså er der en \ foran første
> gang for at finde alle $-tegn. Anden gang skal der indsættes en \
> efterfulgt af et $, $ skal stadig escapes, altså en \ foran.
>
> Så kan jeg ikek huske om en \ også skal escapes, i så fald skal
> der stå "\\\$" anden gang...
>
> ..eller sidder jeg bare og vrøvler?
>

Tak til jer begge - det var det med at escape $ tegnet jeg rodede rundt
i. Har fået det til at virke nu.

Enten skal det være $cleanString = str_replace("\$","\\$",$data); eller
$cleanString = str_replace('$','\$',$data);

Begge virker.

Grunden til at $cleanString = str_replace("\$","\\$",$data);
ikke virkede første gang jeg prøvede den var at jeg lavede en fejl 40
og printede $data i stedet for $cleanstring :)

Mvh.
Flemming



--
Hvis du vil svare per e-mail skal "fjerndette." fjernes fra
mailadressen.


Niels Andersen (19-03-2003)
Kommentar
Fra : Niels Andersen


Dato : 19-03-03 23:07

Mads Lie Jensen wrote in <i9oh7vsci9n4st0vvhvk8gc313nskfujnv@4ax.com>:
>>>> $cleanString = str_replace("\$","\\$",$data);
>>Den forstår jeg til gengæld stadig ikke.
> $ i double-quotes skal escapes, altså er der en \ foran første gang for
[...]

> Så kan jeg ikek huske om en \ også skal escapes, i så fald skal der stå
> "\\\$" anden gang...

Hvis du har ret, så skal der tre slashes på anden gang.
Og hvis du har ret, så er det den første linje jeg ikke forstår.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Mads Lie Jensen (20-03-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 20-03-03 19:00

On Wed, 19 Mar 2003 23:07:08 +0100, Niels Andersen
<niels-usenet@myplace.dk> wrote:

>>>>> $cleanString = str_replace("\$","\\$",$data);
>>>Den forstår jeg til gengæld stadig ikke.
>> $ i double-quotes skal escapes, altså er der en \ foran første gang for
>[...]
>
>> Så kan jeg ikek huske om en \ også skal escapes, i så fald skal der stå
>> "\\\$" anden gang...
>
>Hvis du har ret, så skal der tre slashes på anden gang.

Nu blev jeg så nødt til at teste

<?php
echo "\$<br>";
echo "\\$<br>";
echo "\\\$<br>";
?>

udskriver:

$
\$
\$

på min php 4.3.1 på en linux.

Dvs. man _behøver_ ikke escape \ men det skader ikke at gøre det.
(Hvilket jeg da syntes er lidt forvirrende....)

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Lær af andres fejl
- du lever alligevel ikke længe nok til selv at prøve dem alle.

Niels Andersen (20-03-2003)
Kommentar
Fra : Niels Andersen


Dato : 20-03-03 19:50

Mads Lie Jensen wrote in <r80k7v81r4tj4los7hanoau4583hvkb0jg@4ax.com>:
>>Hvis du har ret, så skal der tre slashes på anden gang.
> echo "\\$<br>";
> udskriver:
> \$

(groft citeret)

Okay, i nogle situationer går det så alligevel. Typisk PHP.
"Skal" er måske lidt overdrevet, men så da "næsten tvingene nødvendigt"
eller "du får højest 11 for din kodestil".

Eksempel på at det ikke virker:

<?php
$test = "XX";
echo "\\$test<br>";
?>

Her vil man forvente "\XX<br>", men pga. ovenstående vil nogen nok forvente
"\$test<br>".

> Dvs. man _behøver_ ikke escape \ men det skader ikke at gøre det.

Nogle gange gør det så alligevel. Man bør være konsekvent. Så er der mindre
chance for fejl, og det bliver nemmere at forstå kildekoden senere.

> (Hvilket jeg da syntes er lidt forvirrende....)

Helt enig. Faktisk generer det mig mere og mere at PHP er så tilgivende.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Andreas Haugstrup Pe~ (20-03-2003)
Kommentar
Fra : Andreas Haugstrup Pe~


Dato : 20-03-03 20:04

Niels Andersen <niels-usenet@myplace.dk> wrote in
news:1096791.fModLnhIv9@home.myplace.dk:

> Eksempel på at det ikke virker:
>
> <?php
> $test = "XX";
> echo "\\$test<br>";
> ?>
>
> Her vil man forvente "\XX<br>", men pga. ovenstående vil nogen nok
> forvente "\$test<br>".

Er det ikke netop derfor at der er smart at benytte væltede tuborg når man
vil indsætte en variabel's værdi?

<?php
   $test = "XX";
   echo "\\{$test}<br />";
?>

klikke-klik: <URL:http://dk.php.net/manual/en/language.types.string.php>
cirka halvvejs nede i afsnittet "Complex (curly) syntax".

Så slipper man også for de irriterende: echo "Hej: " . $navne["fornavn"][1]
.. ". Du er en person.";
Det kan i stedet bare skrives: echo "Hej: {$navne["fornavn"][1]}. Du er en
person";

--
Andreas
<http://www.solitude.dk>

Niels Andersen (20-03-2003)
Kommentar
Fra : Niels Andersen


Dato : 20-03-03 20:23

Andreas Haugstrup Pedersen wrote in
<Xns9344CC44FDB34usenetsolitudedk@130.225.247.90>:
>> $test = "XX";
>> echo "\\$test<br>";
[...]
>> Her vil man forvente "\XX<br>", men pga. ovenstående vil nogen nok
>> forvente "\$test<br>".
> Er det ikke netop derfor at der er smart at benytte væltede tuborg når man
> vil indsætte en variabel's værdi?

Først og fremmest synes jeg det er smart at escape korrekt.

Derudover synes jeg også man bør gøre mere en blot at skrive variablerne i
double-quotes.

> echo "\\{$test}<br />";

Det er en måde, ja. Og når det bliver mere kompliceret end "Hej $fornavn
$efternavn", så er det langt bedre end ingenting.

Jeg foretrækker så oftest at gå ind og ud af strengen frem for at bruge
curly brackets, men hovedsagen er, at det skrives på en måde, så en øvet
programmør nemt kan overskue det.

Men nu er det jo escapes tråden handler om, og uanset hvad man ellers gør,
kan det vist kun være en stor fordel, at escape korrekt.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408657
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste