enkele of dubbele quotes?
mijn vraag is als ik bijvoorbeeld in php een formulier maak met html, hoe moet ik dan laten zien dat het html is, ipv php.
ik doe normaal dit:
Is dat correct, met dubbele quotes na de echo, en enkele bij de waardes.
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.
Klopt enkele quotes is sneller ( al zou je dat niet snel merken )
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.
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.
In PHP gebruik je bij voorkeur enkele quotes. Als je dubbele quotes gebruikt dan wordt de data door de PHP parser gestuurd.
echo 'hoi';
Resultaat wordt meteen op scherm getoond.
echo "hoi";
Resultaat wordt naar de PHP parser gestuurd en dan getoond. Is iets langzamer...
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.
Ik zelf vind dit het fijnst:
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
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" />';
?>
Ja, regels voor escapen in PHP:
- 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.
- 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".
Kijk, van dit soort topic's leer je nog eens wat.
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.
Vandaag de dag is enkel of dubbel ong. even snel, zo zegt phpbench.
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.
Om dit topic nog wat interessanter te maken je hebt nog 2 methodes voor een string:
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.
Nowdoc
Zelfde als Heredoc, maar dan alsof het een enkele quote string is. Dus hier word niks geescaped of geparsed:
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




