single quotes vs double quotes

Jeg har denne koden. I arrayen så er det en single quote i firmanavnet. Denne må være der. Arrayen skal så kastes inn i et skjema som lages med php. Arrayen har også double quotes i seg.

$values = serialize(array(
"navn" => "Pål Pålsen",
"firma" => "Pål's hønefarm"
));

$form = "<form action='' method='post'>
<input type='hidden' name='values' value='".$values."' />
<input name='Submit' type='submit' value='Send' />
</form>";

echo $form;

Når jeg ser på kildekoden i Firefox så har skemafeltet ‘values’ fått rød skrift pga det ikke valideres riktig i hht w3c.

Når skal man bruke single quotes og når skal man bruke double quotes?

Her finnes det alternativer.

Man kan enten skrive riktig norsk

$values = serialize(array( "navn" => "Pål Pålsen", "firma" => "Påls hønefarm" ));

eller bli helt amerikaner og bruke backtick

$values = serialize(array( "navn" => "Pål Pålsen", "firma" => "Pål`s hønefarm" ));

eller skrive riktig PHP med escaping

$values = serialize(array( "navn" => "Pål Pålsen", "firma" => "Pål\'s hønefarm" ));

eller bruke doble tødler i HTML’en

[code=“php”]$values = serialize(array(
“navn” => “Pål Pålsen”,
“firma” => “Pål’s hønefarm”
));

$form = '

';

echo $form;
[/code]

1 Like

Hvordan escaper man en string som inneholder båre ’ og "

Thomas' høner legger egg "hver" dag

Jeg får ikke lagt stringen i addslashes når stringen inneholder begge typer quotes.

Litt usikker, men noe sånt kanskje

$str1 = 'Thomas\' høner legger egg "hver" dag';
$str2 = addslashes($str1); // Thomas\' høner legger egg \"hver\" dag

Ikke noe mer å tilføye.
Jeg bruker vanligvis single quotes for vanlige strenger. Vanesak, ikke fanesak.

Addslashes fikser det meste. Problemet var at hvis en value har double quotes i seg så tror browseren at den skal lukke value med denne quoten.

eksempel:

$hello = 'Koding er "lett" ';
<input type="hidden" name="hello" value="'.$hello.'" />

Så blir det i browseren noe slik

<input type="hidden" name="hello" value="Koding er "lett"" />

Slik at value blir

Koding er 

mens

lett""

står utenfor value.

Når man skal dytte en array som inneholder både single og double quotes inne i et skjemafelt så er det som å be om trøbbel. Kan man poste data på andre måter enn skjema uten bruk av javascript?

Sjekk denne:
http://stackoverflow.com/questions/46483/htmlentities-vs-htmlspecialchars
Gjør det du kan for å sikre at det du sender til browseren er sikker.