Avatar billede larsbachmanndk Nybegynder
16. september 2005 - 13:14 Der er 19 kommentarer og
1 løsning

hvorfor bruger man det tegn

Jeg har lige et dumt spm.
Jeg har længe undret mig, når jeg har læst diverse spm her på EXP at når folk skriver noget kode bruger de \" istedet for bare "

dette eksempel er copy/paste fra et andet spm:
<INPUT type=\"Button\" onClick=\"window.close()\">

det ville jeg normalt bare skrive sådan:
<INPUT type="Button" onClick="window.close()">

Hvorfor bruge \ tegnet
Avatar billede busschou Praktikant
16. september 2005 - 13:18 #1
I php bruges det til at escape " med tilsvarende som i asp man bruger en ekstra altså ""
Hvis du laver en
response.write "hej ""ib"""
så bliver det udskrivet som
hej "ib"
Det er i vbscript, og jeg kan forestille mig at \" kommer fra jscript men altså samme funktionalitet
Avatar billede kalp Novice
16. september 2005 - 13:18 #2
Ellers læser den ikke " tegnet.. men tror det er en del af navnet på det næste du skriver
Avatar billede hmortensen Nybegynder
16. september 2005 - 13:19 #3
Vil tro det er fordi siden er blevet ændret gennem tiden, og den gang blev brugt addslashes() (php funktion), for at escape special tegn inden det blev smidt i databasen, og senere er der blevet brugt en anden metode, hvilket gør at gammelt data bliver dobblet escaped.
Avatar billede busschou Praktikant
16. september 2005 - 13:19 #4
hvis du skal skrive
<INPUT type="Button" onClick="window.close()">
så bliver det til
response.write "<INPUT type=""Button"" onClick=""window.close()"">"
i php ville det være
echo "<INPUT type=\"Button\" onClick=\"window.close()\">";
Avatar billede cpufan Juniormester
16. september 2005 - 13:20 #5
Det kaldes escape tegn, og bruges til at få fortolkeren til at læse det som et tegn istedet for en "kommando"

i asp gøres sådan:

response.write "<td>"
hvis du skriver
response.write "<td>"</td>"
giver det fejl
response.write "<td>\"</td>"
giver ikke fejl
Avatar billede cpufan Juniormester
16. september 2005 - 13:22 #6
og ved godt jeg var for langsom, men var altså i fuld gang med at skrive, inden der overhovedet var indlæg :D
Avatar billede cpufan Juniormester
16. september 2005 - 13:23 #7
iøvrigt er det lidt spild af "" at skrive:
response.write "<INPUT type=""Button"" onClick=""window.close()"">"

hvilket kan klares med
response.write "<INPUT type=Button onClick=window.close()>"
Avatar billede hmortensen Nybegynder
16. september 2005 - 13:26 #8
Tror spørger mener hvorfor alenestående html er escaped, som det er i gamle spm, som fx. det her:
http://eksperten.dk/spm/54031
Avatar billede busschou Praktikant
16. september 2005 - 13:26 #9
cpufan >> det er muligt det er spild af tid, men det er kun "elendige" browsere som anerkender der ikke er gåseøjne omkring. Det er defineret i html standarden at det hedder
type="button"
og ikke bare
type=butten
--
Fx vil du givetvis opleve problemer hvis du skriver
<input type=text value=hej med dig>
frem for
<input type="text" value="hej med dig">
--
Så det var vist et dårligt råd du kom med der ;o)
Avatar billede cpufan Juniormester
16. september 2005 - 13:33 #10
ok busschou, så tager jeg det i mig, explorer må så være elendig ;) efter din mening.
Avatar billede hmortensen Nybegynder
16. september 2005 - 13:36 #11
Der findes ikke elendige browsere, men elendige web-kodere, hvilket har gjort det nødvendigt for mange browser prdocenter at tillade mindre korrekt kode.
Avatar billede busschou Praktikant
16. september 2005 - 13:40 #12
cpufan >> ok måske lød jeg lidt grov, men du vil se at FireFox, opera og IE og sikkert flere i eksemplet kun vil skrive "hej" i tekstboksen hvis der ikke er gåseøjne omkring "hej med dig".
Selvfølgelig er det ikke det samme som at browseren er elendig, men mere som hmortensen skriver at koderen er elendig
At du vælger ikke at benytte " omkring i html er det samme som hvis du vælger ikke at skrive stumme h´er i det danske sprog. Html er jo et sprog fuldstændig som det danske er et sprog, og jeg vil som dansker have et problem hvis ordet "Hvad" blev til "vad" osv...
Derfor mener jeg principielt ikke at man bør afvige fra standarderne med mindre der er en og anden rigtig god grund :o)
Avatar billede larsbachmanndk Nybegynder
16. september 2005 - 13:49 #13
Tak for alle forklaringerne.
Det er ganske rigtig som hmortensen skriver og jeg citerer:

Tror spørger mener hvorfor alenestående html er escaped, som det er i gamle spm, som fx. det her:
http://eksperten.dk/spm/54031
Avatar billede busschou Praktikant
16. september 2005 - 14:04 #14
Hmm  jeg ser i det eksempel ikke noget alenestående html som er escaped, men jeg ser at " er escaped som \" i asp koden samt javascript koden i eksemplet
--
som jeg ser det er der et par muligheder til dette
Enten er det en bug på eksperten som gør at den i alle gamle spørgsmål laver disse ecape tegn, hvem ved der er jo en del bug i eksperten ;o)
Eller også er det fordi man skrev det sådan engang i javascript og asp, men det tør jeg så ikke blive hængt op på eftersom jeg ikke kodede dengang :o/
Avatar billede hmortensen Nybegynder
16. september 2005 - 14:08 #15
Taget fra ovenstående link:
Her --> <label id=\"daysuntil\" name=\"daysuntil\"></label>
Her --><SCRIPT LANGUAGE=\"JavaScript\">
<!--

var SECOND = 1000;
var MINUTE = SECOND * 60;
var HOUR = MINUTE * 60;
var raw;
var sekunder = 0;
var minutter = 0;
var tmer = 0;
Her -->  setTimeout(\"daysBetween(2001, 2, 24)\",\"10\");  // daysBetween(2001, 2, 24) = år 2001, måned 2 (februar), dag nr. 24 i måneden.. (du skal oxo rette det nederst i javascriptet)
function daysBetween(yr, mo, dy) {
  var nDate = new Date(); // current date (local)
  var nTime = nDate.getTime(); // current time (UTC)
  var dTime = Date.UTC(yr, mo - 1, dy); // specified time (UTC)
  var bTime = Math.abs(nTime - dTime);  // time difference
  raw = bTime;
  tmer = inte(raw / HOUR - 1);
  raw = inte(raw - ((tmer + 1) * HOUR));
  minutter = inte(raw / MINUTE);
  raw = inte(raw - (minutter * MINUTE));
  sekunder = inte(raw / SECOND);
if (tjekforsent(dTime - nTime) == \"True\") {
Her -->  daysuntil.innerHTML = \"Tiden er udløbet\";
}
Her -->else if (tjekforsent(tmer) == \"True\")
Osv...

busschou, hvis du læser min først post, er der en forklaring på det. Det er ikke n bug, men data gemt på en anden måde, og dermed blevet dobblet escaped.
Avatar billede busschou Praktikant
16. september 2005 - 14:13 #16
hmortensen >> i givet fald vil jeg også mene at det så er en bug/fejl (kald det hvad man vil - noget som i mine øjne bør rettes op sammen med tusind andre fejl på exp)
PS: jeg kan godt se forskel på \" og " uden man skriver "her" ;o) og så har du selv i din copypaste glemt at skrive "her" et par steder ;o)
Avatar billede busschou Praktikant
16. september 2005 - 14:14 #17
hmortensen >> bare fordi noget har en forklaring god som dårlig, så er det jo ikke det samme som at det ikke er en bug/fejl ;o)
Men anyway, det er jo sikkert derfor
Avatar billede hmortensen Nybegynder
16. september 2005 - 14:14 #18
Så jeg bagefter ;)

Det er jo umuligt at rette. Man kan jo ikke bare køre en replace, for nogle (mange) steder skal der jo være escape sekvens.
Avatar billede busschou Praktikant
16. september 2005 - 14:15 #19
Det er så i øvrigt nemmere at se at det er en fejl på eksperten hvis man ser på spørgsmål hvor det ikke er html koden men normal tekst med gåseøjne omkring
fx spørgsmålet før
http://eksperten.dk/spm/54030
Avatar billede larsbachmanndk Nybegynder
29. september 2005 - 14:37 #20
Tak for jeres deltagelse
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
Kurser inden for grundlæggende programmering

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