enkele of dubbele quotes?
ik doe normaal dit:
Code (php)
Is dat correct, met dubbele quotes na de echo, en enkele bij de waardes.
In html werken we altijd met dubbele quotatie, dus <input type='password' /> is incorrect en moet <input type="password" /> zijn. In PHP werken we vooral met individuele quotatie omdat dat handiger is als je HTML wilt echoën, daarnaast is het als ik het me goed herinner 0,00004 seconden sneller.
Enkele quotes in HTML is niet fout en toegestaan door de HTML standaard dus browser zullen hier geen problemen mee hebben.
Toch staat dubbele quotes gewoon netter.
@Victor: Bedankt, zo leer ik ook nog eens wat. :)
Enkele quotes is precies even snel als dubbele quotes. Het word pas slomer als je variabelen in deze dubbele quotes plakt.
echo 'hoi';
Resultaat wordt meteen op scherm getoond.
echo "hoi";
Resultaat wordt naar de PHP parser gestuurd en dan getoond. Is iets langzamer...
Ozzie PHP op 08/11/2011 16:49:33:
echo 'hoi';
Resultaat wordt meteen op scherm getoond.
Resultaat wordt meteen op scherm getoond.
Niet geheel correct.
Ook dit moet door de parser want er wordt naar escapes gekeken.
Ik had er een tijd geleden een artikel over gezien, die had alle acties van de compiler opgeslagen, en het bleek dat er in beide gevallen dezelfde acties werden uitgevoerd.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
echo "Gebruikersnaam: <input type='text' style='margin-left:200px;' />
<br />
Wachtwoord: <input type='password' />";
?>
echo "Gebruikersnaam: <input type='text' style='margin-left:200px;' />
<br />
Wachtwoord: <input type='password' />";
?>
aangezien ik escapen niet echt handig vind.
Maar aangezien het bovenstaande niet correct is, moet ik het dus zo doen?:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
echo 'Gebruikersnaam: <input type="text" style="margin-left:200px;" />
<br />
Wachtwoord: <input type="password" />';
?>
echo 'Gebruikersnaam: <input type="text" style="margin-left:200px;" />
<br />
Wachtwoord: <input type="password" />';
?>
- PHP zoveel mogelijk met enkele quotes('), dit is sneller
- Zodra er in een string enkele quotes staan buiten de string dubbele, zo hoef je niet te escapen
- Zodra er in een string dubbele quotes staan buiten de string enkele.
- Zodra je gebruik maakt van \n of een van de andere escaped characters gebruik je dubbele (") quotes.
En hieruit kun je afleiden:
- Met een query altijd dubbele (aangezien je enkele erin gebruikt)
- Met HTML altijd enkele, aangezien de aanbevolen quotes in HTML dubbel zijn.
Gewijzigd op 08/11/2011 20:17:30 door Wouter J
- SanThe - op 08/11/2011 16:58:05:
Niet geheel correct.
Ook dit moet door de parser want er wordt naar escapes gekeken.
Ozzie PHP op 08/11/2011 16:49:33:
echo 'hoi';
Resultaat wordt meteen op scherm getoond.
Resultaat wordt meteen op scherm getoond.
Niet geheel correct.
Ook dit moet door de parser want er wordt naar escapes gekeken.
Ik denk dat dit eerder met de syntax te maken heeft, omdat je de echo afsluit.
probeer dit maar eens:
$bla = 'test';
echo 'Hoi \'dit staat $bla tussen quotes\'';
echo "Hoi 'dit staat $bla tussen quotes'";
In het laatste geval wordt ie door de parser getrokken en wordt "test" op het scherm getoond. In het 1e geval staat er gewoon "$bla".
Gewijzigd op 08/11/2011 18:48:23 door Eddy B
Ozzie PHP op 08/11/2011 18:34:07:
Ik denk dat dit eerder met de syntax te maken heeft, omdat je de echo afsluit.
probeer dit maar eens:
$bla = 'test';
echo 'Hoi \'dit staat $bla tussen quotes\'';
echo "Hoi 'dit staat $bla tussen quotes'";
In het laatste geval wordt ie door de parser getrokken en wordt "test" op het scherm getoond. In het 1e geval staat er gewoon "$bla".
probeer dit maar eens:
$bla = 'test';
echo 'Hoi \'dit staat $bla tussen quotes\'';
echo "Hoi 'dit staat $bla tussen quotes'";
In het laatste geval wordt ie door de parser getrokken en wordt "test" op het scherm getoond. In het 1e geval staat er gewoon "$bla".
Hoe dan ook, het gaat niet direct naar het scherm, de escape slashes worden eerst verwijderd voordat het naar het scherm gaat. De $var wordt inderdaad genegeerd.
De snelheid is inderdaad te verwaarlozen, de grootste voordelen beschreef Wouter in een voorgaande post.
Jacco Brandt op 08/11/2011 15:28:36:
Enkele quotes is precies even snel als dubbele quotes. Het word pas slomer als je variabelen in deze dubbele quotes plakt.
Hoe zou PHP dan weten dan jij $var in je string hebt geplakt? Door de string te lezen en dat kost ook tijd.
Heredoc
Dit is hetzelfde als een dubbele quote string, maar dan zonder quotes. Quotes hoeven hier dus nooit geescaped te worden. Verder kun je hier dus ook variabelen, functies en escaped characters kwijt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$naam = 'Jerry';
echo <<<EOD // Met de ingang van de Nowdoc in PHP5.3 kan deze ook met dubbele quotes "EOD"
Dit is een "voorbeeld". Hallo $naam
EOD; // Dit wordt Dit is een "voorbeeld". Hallo Jerry
?>
$naam = 'Jerry';
echo <<<EOD // Met de ingang van de Nowdoc in PHP5.3 kan deze ook met dubbele quotes "EOD"
Dit is een "voorbeeld". Hallo $naam
EOD; // Dit wordt Dit is een "voorbeeld". Hallo Jerry
?>
Nowdoc
Zelfde als Heredoc, maar dan alsof het een enkele quote string is. Dus hier word niks geescaped of geparsed:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$naam = 'Jerry';
echo <<<'EOD'
Dit is een 'voorbeeldje', hallo $naam
EOD; // Wordt Dit is een 'voorbeeldje', hallo $naam
?>
$naam = 'Jerry';
echo <<<'EOD'
Dit is een 'voorbeeldje', hallo $naam
EOD; // Wordt Dit is een 'voorbeeldje', hallo $naam
?>
Edit:
Zoals je ziet kan deze syntax highlighter deze strings niet aan
Gewijzigd op 08/11/2011 20:24:56 door Wouter J