[php] echo met welke quotes?

Pagina: 1
Acties:
  • 372 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • UltimateB
  • Registratie: April 2003
  • Niet online
Ik vraag me wat af. Ik ben sinds kort mijn echo's anders gaan schijven, even een kleine history.

Eerst:
PHP:
1
echo "<font size=\"1\">Ik ben $naam</font>";


Later:
PHP:
1
echo "<font size =\"1\">Ik ben ".$naam."</font>";


Nu:
PHP:
1
echo '<font size="1">Ik ben '.$naam.'</font>';


Nu kijk ik nog wel eens in andermans scripts en het valt me op hoe veel mensen de 1e variant gebruiken. Ik ben uiteindelijk op mijn huidige schrijfwijze gekomen omdat dit veel overzichtelijker is als je nog wel eens html echo'd. Ik vraag me af wat de motivatie is voor mensen die de 1e variant gebruiken.

offtopic:
Had even een pauze nodig ;)

"True skill is when luck becomes a habit"
SWIS


Acties:
  • 0 Henk 'm!

  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
Persoonlijk gebruik ik de 2e variant, omdat ik dan snel variabelen terug kan zien (ik gebruik EditPlus en die heeft kleurtjes :Y) )

Ik gebruik dubbele quotes, maar echt een geldige reden kan ik er niet voor vinden eigenlijk. Altijd zo gedaan, dus tja...

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Ik gebruik ook de 2e variant maar als ik goed nadenk lijkt me de 3e variant handiger werken. Ik denk dat ik die maar eens ga proberen :D

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat de motivatie is om die eerste variant te gebruiken? Dat het korter is. Wat de motivatie is om de laatste variant te gebruiken? Snelheid, duidelijkheid. De middelste variant is verder redelijk vaag IMHO, omdat je niet gebruik maakt van de mogelijkheden van de dubbele quotes om variabelen te parsen, maar het zaakje toch "vertraagt" omdat PHP intern wel gaat kijken of er wat te parsen valt.

Persoonlijk vind ik duidelijkheid belangrijker dan korte code, en daarom kies ik altijd voor je laatste variant.

Wat is het eigenlijk dat je met dit topic wilt bereiken? Zo gek veel antwoorden zijn hier niet mogelijk. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 04-08 14:27
MIsschien ff iets om rekening mee te houden;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// outputs:
// test
// test

// code:
// test<br>
// test
echo "test<br>\r\ntest";

// outputs:
// test
// \r\ntest

// code:
// test<br>\r\ntest
echo 'test<br>\r\ntest';
?>

Zelf gebruik is sinds een tijdje ook de 3rde optie.
Soms in combinatie;
PHP:
1
2
3
<?php
echo 'test<br>' . "\r\n" . 'test';
?>


Voor de lux users ook maar ff \r erbij gezet :P

[ Voor 73% gewijzigd door sjhgvr op 13-10-2005 17:38 ]

oisd.nl


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
-NMe- schreef op donderdag 13 oktober 2005 @ 17:27:
Wat de motivatie is om die eerste variant te gebruiken? Dat het korter is. Wat de motivatie is om de laatste variant te gebruiken? Snelheid, duidelijkheid. De middelste variant is verder redelijk vaag IMHO, omdat je niet gebruik maakt van de mogelijkheden van de dubbele quotes om variabelen te parsen, maar het zaakje toch "vertraagt" omdat PHP intern wel gaat kijken of er wat te parsen valt.
Mwah, ik vind het volgende ook vrij lelijk:

PHP:
1
echo 'Waa meukee'.$foo.'bar.'."\r\n";


Bijvoorbeeld.. Aangezien \r\n niet geparsed wordt in enkele quotes moet je dus wel dubbele gebruiken.. Of als iemand anders een beter idee heeft :Y)

edit:
Overigens gebruik ik tegenwoordig wel enkele quotes, geen idee waarom eigenlijk, vind het gewoon netter staan :)

[ Voor 11% gewijzigd door Osiris op 13-10-2005 17:35 ]


Acties:
  • 0 Henk 'm!

  • UltimateB
  • Registratie: April 2003
  • Niet online
Voorral eigenlijk kijken of er veel mensen die van die rare (onhandige?) constructies gebruiken en dan hopen diegene wat bij te brengen wat netjes coden aangaat. ;)

Hoe dan ook, 1st_ro, wordt jij dan niet gek van de hele tijd eventuele dubbele quotes te moeten escapen? Ik werd hier dus op een gegeven moment helemaal gestoord van... Het ontcijferen van oude/andermans code is op de bovenste 2 manieren ook niet echt ideaal... :P

Eigenlijk is het maar vervelend dat bij PHP alle mogelijke manier mogelijk zijn. Dit maakt het zo veel moeilijker om te werken met andermans code (in sommige gevallen).

edit:
DapinododiadeaL schreef op donderdag 13 oktober 2005 @ 17:34:
MIsschien ff iets om rekening mee te houden;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// outputs:
// test
// test

// code:
// test<br>
// test
echo "test<br>\ntest";

// outputs:
// test
// \ntest

// code:
// test<br>\ntest
echo 'test<br>\ntest';
?>

Zelf gebruik is sinds een tijdje ook de 3rde optie.
Soms in combinatie;
PHP:
1
2
3
<?php
echo 'test<br>' . "\n" . 'test';
?>
Hehe, daar liep ik dus tegenaan vandaag tijdens het maken van een email... :) Er zitten dus wel degelijk haken en ogen aan de laatste notatie.

[ Voor 35% gewijzigd door UltimateB op 13-10-2005 17:37 ]

"True skill is when luck becomes a habit"
SWIS


Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Ik gebruik zelf eigenlijk waar mogelijk (s)printf, met dubbele quotes. Alleen een beetje opletten dat je de juiste variabelen wel neerplempt aan het einde.

[ Voor 20% gewijzigd door GX op 13-10-2005 17:38 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ik gebruik printf met enkele quotes, en bij uitzondering echo met komma-gescheiden parameters.

PHP:
1
2
3
printf ( '<a href="%s">%s</a>', $someLink, $someString );
printf ( '<a href="%2$s">%1$s</a>', $someString, $someLink );
echo '<a href="', $someLink, '">', $someString, '</a>';


de eerste variant is imo veruit de overzichtelijkste, vooral omdat je in 1 keer kunt zien wat de html is, en of die goed in elkaar steekt. Verder ook als je de parameters moet gaan nesten:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
printf ( 
   '<a href="%s">%s</a>',
   htmlentities ( $link ),
   htmlentities ( ucfirst ( strtolower ( $someString ) ) )
);

// t.o.v.:

echo '<a href="', htmlentities ( $link ), '">', 
   htmlentities ( ucfirst ( strtolower ( $someString ) ) ), 
   '</a>';
// o.i.d.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Osiris schreef op donderdag 13 oktober 2005 @ 17:34:
Mwah, ik vind het volgende ook vrij lelijk:

PHP:
1
echo 'Waa meukee'.$foo.'bar.'."\r\n";


Bijvoorbeeld.. Aangezien \r\n niet geparsed wordt in enkele quotes moet je dus wel dubbele gebruiken.. Of als iemand anders een beter idee heeft :Y)

edit:
Overigens gebruik ik tegenwoordig wel enkele quotes, geen idee waarom eigenlijk, vind het gewoon netter staan :)
PHP:
1
echo 'Waa meukee'.$foo."bar.\r\n";

;)

Ik gebruik zo min mogelijk dubbele quotes, maar als ik anders twee statische strings zo aan elkaar moet plakken zoals jij het hier deed, dan los ik het liever zo op. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Qua snelheid is het misschien interessant. Ik heb net een kleine benchmark uitgevoerd, en daaruit bleek dat methode 2 en 3 nauwelijks schelen. Methode 1 is 80% langzamer. Die benchmark bestond uit 1 miljoen assignments.
Bij echo kun je ook komma's gebruiken ipv concatenation, maar dat blijkt (bij de geteste kleine strings) een nadelige invloed te hebben op de performance.

Acties:
  • 0 Henk 'm!

  • brehloi
  • Registratie: Februari 2004
  • Laatst online: 07-09 18:10
Wat is het eigenlijk dat je met dit topic wilt bereiken? Zo gek veel antwoorden zijn hier niet mogelijk. ;)
Ook ik vind het eigenlijk wel interessant om te zien welke manier eigenlijk het meeste wordt gebruikt.
Methode 1 is 80% langzamer.
Scheelt dat zoveel? Wel iets om rekening mee te houden dan.

Ben zelf nog niet zo heel lang bezig met php maar dit punt was me wel al opgevallen. Resultaat is dat ik niet consequent één versie gebruik. En ja das dus eigenlijk de slechtste methode...

[ Voor 12% gewijzigd door brehloi op 13-10-2005 17:44 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

-NMe- schreef op donderdag 13 oktober 2005 @ 17:27:
De middelste variant is verder redelijk vaag IMHO, omdat je niet gebruik maakt van de mogelijkheden van de dubbele quotes om variabelen te parsen, maar het zaakje toch "vertraagt" omdat PHP intern wel gaat kijken of er wat te parsen valt.
Onzin, dat "parsen" (het heet scannen ;)) is meestal een stuk rapper dan de boel überhaupt naar buiten gooien, dus dat verschil is zo goed als nihil. Daarnaast moet er toch al gescanned worden naar de sluit-quote en eventuele escape sequences, dus het zoeken naar een $ kan daar ook wel bij (en gezien de aard van hedendaagse lexical scanners maakt het aantal rules totaal niet uit)

Verder is de bovenste idd minder duidelijk dan de onderste twee, dus dan hangt het er maar net vanaf welke voorkeur je hebt: " of '. Als c++ coder in hart en nieren kies ik dus voor de middelste, plus het feit dat alle escape sequences niet werken in de single-quoted strings, maar je de escapes zelf wel moet escapen omdat je de ' ook moet kunnen escapen. Nou vraag ik je... 8)7

[ Voor 24% gewijzigd door .oisyn op 13-10-2005 17:47 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Oh ja, snelheid is echt een non-issue. 't Gaat echt over microseconden. Optimize dan liever andere dingen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op donderdag 13 oktober 2005 @ 17:39:
PHP:
1
echo 'Waa meukee'.$foo."bar.\r\n";
PHP:
1
2
$enter = "\r\n";
echo 'Waa meukee'.$foo.'bar'.$enter;

?

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

.oisyn:
plus het feit dat alle escape sequences niet werken in de single-quoted strings, maar je de escapes zelf wel moet escapen omdat je de ' ook moet kunnen escapen. Nou vraag ik je... 8)7
PHP:
1
<? echo '\n'; ?>

geeft
\n
Niks, dat is het antwoord op de vraag "wat is de kennis die .oisyn heeft van escape sequences in php?"

:+
Escape sequences in single quotes strings hebben alleen effect als het een \' of een \\ is. verder niet.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

mark platvoet: doe dan
PHP:
1
2
3
define ("CRLF", "\r\n");

echo 'Waa meukee' . $foo . CLRF;


En het gaat uiteraard niet om de naamgeving

[ Voor 6% gewijzigd door .oisyn op 13-10-2005 17:48 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
Ik gebruik zelf altijd de derde manier,

PHP:
1
echo '<a href="url">Tekst!' . $variable . '</a>';


dat vind ik zelf perfect werken, je kan valid html ( de dubbele quotes ) maken, en het dwingt je om variablen buiten te quotes te zetten wat natuurlijk een vereiste is :)

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ik zat al te zoeken of PHP toevallig zo'n constante überhaupt zelf al had gedefineerd ofzo, maar kan 't niet vinden :/

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

drm schreef op donderdag 13 oktober 2005 @ 17:47:
[...]


PHP:
1
<? echo '\n'; ?>

geeft
[...]
Dat is ook zo idd, maar dat vind ik nog krommer. Hoewel het bij de enkele quotes wel meevalt, vind ik het raar dat het maar gewoon geaccepteerd wordt als er een niet-geldige char achter de \ staat. Als die char ooit eens wordt toegevoegd breekt je code, en niemand die daar een seintje om geeft. Ergo, backslashes altijd escapen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op donderdag 13 oktober 2005 @ 17:47:
mark platvoet: doe dan
PHP:
1
2
define ("CRLF", "\r\n");
echo 'Waa meukee' . $foo . CLRF;
Ja zo'n constructie bedoel, ik ben alleen niet zo op de hoogte van alle mogelijkheden van php...

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

PHP:
1
define ('CRLF', "\r\n");

/mierenneukmodus :P

of

PHP:
1
define ('LF', "\n");

elke fatsoenlijke editor, ook onder windows, kan daar gewoon mee overweg, en het scheelt weer wat bytes in je broncode ;)

[ Voor 59% gewijzigd door crisp op 13-10-2005 17:57 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Dat is ook zo idd, maar dat vind ik nog krommer.
edit:
For the record: 't is wel krom, dat ben ik wel met je eens :P Maar krom is niet onhandig in dit geval (imo)
Hoewel het bij de enkele quotes wel meevalt, vind ik het raar dat het maar gewoon geaccepteerd wordt als er een niet-geldige char achter de \ staat. Als die char ooit eens wordt toegevoegd breekt je code, en niemand die daar een seintje om geeft. Ergo, backslashes altijd escapen.
Niet mee eens. Je escaped je dan helemaal de krampen als je met regular expressions moet gaan werken waar een \ als match-self character voor moet komen, en dan is het echt niet duidelijker om alle backslashes te escapen, in tegendeel. 't Is natuurlijk wel zo dat in PHP, net als in Perl, de regular expression gewoon een native expression had moeten zijn, maar goed, daar is nou eenmaal weinig aan te doen.

[ Voor 9% gewijzigd door drm op 13-10-2005 17:56 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 19:39
Ik zelf gebruik altijd de 2e optie uit de TS trouwens, simpelweg om dat ik nooit anders gezien heb. :X :P

Ga vanaf nu de derde eens proberen, het lijkt handiger. :)

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

crisp:
elke fatsoenlijke editor, ook onder windows, kan daar gewoon mee overweg, en het scheelt weer wat bytes in je broncode ;)
DAT is inderdaad wat ik bedoelde met:
drm:
Optimize dan liever andere dingen.
:+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

drm schreef op donderdag 13 oktober 2005 @ 17:55:
Niet mee eens. Je escaped je dan helemaal de krampen als je met regular expressions moet gaan werken waar een \ als match-self character voor moet komen, en dan is het echt niet duidelijker om alle backslashes te escapen, in tegendeel.
Je zit sowieso dubbel te escapen op het moment dat je een \ wilt matchen, ik vind het dan onlogisch om het op de ene plek in de string niet te doen en op de andere plek wel.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

crisp schreef op donderdag 13 oktober 2005 @ 17:55:
PHP:
1
define ('CRLF', "\r\n");

/mierenneukmodus :P
Waarom?
PHP:
1
define ('LF', "\n");

elke fatsoenlijke editor, ook onder windows, kan daar gewoon mee overweg, en het scheelt weer wat bytes in je broncode ;)
Ja, behalve dat het gaat om de output van je script, niet om het script zelf, dus je editor heeft er geen zak mee te maken ;)

[ Voor 3% gewijzigd door .oisyn op 13-10-2005 18:02 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Als je single quotes gebruikt voor strings, doe het dan consequent (behalve als het echt niet anders kan) ;)
Overigens doe ik ook nog wel eens gewoon dit als ik enters in de HTML code wil:
PHP:
1
2
3
4
echo '
        <div>
            foo
        </div>';
Ja, behalve dat het gaat om de output van je script, niet om het script zelf, dus je editor heeft er geen zak mee te maken ;)
ik bedoel ook de broncode van de gegenereerde HTML ism de editor/viewer die je onder view-source hebt hangen ;)

[ Voor 6% gewijzigd door crisp op 13-10-2005 18:06 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

crisp schreef op donderdag 13 oktober 2005 @ 18:05:
[...]

Als je single quotes gebruikt voor strings, doe het dan consequent (behalve als het echt niet anders kan) ;)
Dan moet je mijn eerste reactie nog een keer lezen, want ik gebruik dus consequent double-quotes. Dat ik in die echo enkele quotes gebruikt heb is omdat ik dat gecopypaste heb :)
ik bedoel ook de broncode van de gegenereerde HTML ism de editor/viewer die je onder view-source hebt hangen ;)
Output hoeft niet per se html te zijn mind you ;). Veel protocollen gebruiken \r\n als delimiter

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Ik gebruik altijd methode 3, komt nog van de tijd dat ik HTML in m'n PHP had. Elke dubbel quote backslashes vind ik zo onhandig. Methode 1 slaat nergens op, dat is compleet onleesbaar. Ik ga er wel de Platvoet/.oisyn methode aan toevoegen (als het al nodig is, meestal staat al m'n HTML die uit PHP komt op 1 regel).

Als je begint met PHP zou je als eerste een template parser moeten maken, hoef je hier ook niet over na te denken. :P

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

.oisyn schreef op donderdag 13 oktober 2005 @ 18:07:
[...]

Dan moet je mijn eerste reactie nog een keer lezen, want ik gebruik dus consequent double-quotes. Dat ik in die echo enkele quotes gebruikt heb is omdat ik dat gecopypaste heb :)
jaja, smoesjes :P
Output hoeft niet per se html te zijn mind you ;). Veel protocollen gebruiken \r\n als delimiter
I'm aware of that. Over het algemeen ben ik overigens van mening dat als je echt duidelijk inzicht wilt hebben in je HTML markup dat je dan beter naar een template-systeem kan gaan kijken; dan speelt het hele wel/niet escapen verhaal ook geen rol meer.

Overigens ben ik zelf een vervent single-quote gebruiker, zowel in javascript als in PHP.
Attributen in HTML gaan bij mij altijd tussen double quotes (hoef je ook geen ENT_QUOTES mee te geven aan htmlspecialchars in PHP).

[ Voor 10% gewijzigd door crisp op 13-10-2005 18:17 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
en deze variant:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$tekst = <<<STR

Van alles

Ja van alles!

En nog wat!

STR;

echo $str;
?>


Ik ben er zelf nog niet zo bekend mee maar kun je hier ook variabelen in gebruiken? \n\r werkt er wel in...

[ Voor 54% gewijzigd door Slagroom op 13-10-2005 18:21 ]


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Ben trouwens wel benieuwd of jullie SQL queries op dezelfde manier doen.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

.oisyn:
Je zit sowieso dubbel te escapen op het moment dat je een \ wilt matchen, ik vind het dan onlogisch om het op de ene plek in de string niet te doen en op de andere plek wel.
Ja, je hebt gelijk idd. Ik begreep 't verkeerd omdat ik de aanname deed dat je andere escape sequences toe wilde staan in single quoted strings.

Maar ik vind 't wel onzin om een regex als bijvoorbeeld '/\r|\n/' op te schrijven als '/\\r|\\n/', terwijl je weet dat de eerste gewoon geinterpreteerd wordt zoals 't hoort. Laat ik het anders zeggen, geinterpreteerd wordt volgens specificatie, wat resulteert in een letterlijke regex \r|\n. Dan zit je jezelf gewoon op te zadelen met er niet duidelijker op wordende code; je weet tenslotte dat 't alleen problemen oplevert als er na de slash een andere slash of een single quote volgt, in welk geval het overwegen van [ ] als escape methode voor de regex overigens aan te raden valt.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11:30

Guldan

Thee-Nerd

Tjah ikzelf doe altijd html met enkele quotes en de echo met dubbele

vb. echo "Dit is een<a href='http://gathering.tweakers.net'>Link </a>";

ook niet echt de beste manier, maar is wel makkelijk als je een stuk html moet echo'en. Dan hoef je niet eerst alle dubbele quotes om te zetten naar enkele.

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

TheBorg:
Ben trouwens wel benieuwd of jullie SQL queries op dezelfde manier doen.
Tot voor kort gebruikte ik voor SQL queries inderdaad ook de printf variant sprintf. Tegenwoordig werk ik zoveel mogelijk met een O/R mapper, dus heb ik daar geen omkijken meer naar.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Guldan schreef op donderdag 13 oktober 2005 @ 18:23:
Tjah ikzelf doe altijd html met enkele quotes en de echo met dubbele

vb. echo "Dit is een<a href='http://gathering.tweakers.net'>Link </a>";

ook niet echt de beste manier, maar is wel makkelijk als je een stuk html moet echo'en. Dan hoef je niet eerst alle dubbele quotes om te zetten naar enkele.
Stel dat die href uit user-input komt, en jij vergeet de ENT_QUOTES in htmlspecialchars (die je dan hopelijk wel gebruikt), dan heb je toch een probleem als ik foo.php?link='%20onclick='alert(document.cookie)' als link meegeef ;)
PHP:
1
echo "Dit is een<a href='" . htmlspecialchars($_GET['link']) . "'>Link </a>";

[ Voor 4% gewijzigd door crisp op 13-10-2005 18:29 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Ikzelf gebruik al ruim 6 jaar de eerst variant, en dat bevalt nog steeds prima.
Ik gebruik altijd dubbele quotes voor strings. Alleen voor array-keys gebruik ik enkele quotes.
PHP:
1
<?="Blaat {$array['mekker']} $toet";?>


Naar mijn wete belast je de parser ook extra met de 2de en 3de methode.. maar dat is puur een gevoel. Zal ik eens benchen bedenk ik me nu.

Overigens vind ik methode 3 stukken onleesbaarder dan methode 1, bij een constructie als;
PHP:
1
2
3
<?
echo ($a) ? 'De waarde ' . $a . ' zit in variabele $a' : '$a is false';
?>


In tegenstelling tot
PHP:
1
2
3
<?
echo ($a) ? "De waarde $a zit in variabele \$a" : "\$a is false";
?>


@Guldan
Dat is dus geen valid HTML, voor zover je je daar druk om maakt. Overigens zie ik het probleem in het escapen van dubbele quotes in de output niet zo. In Ultraedit zijn dat de toetsen;
[CTRL] + [R], ["], [TAB], [\], ["], [ALT] + [L], [ALT] + [A], [ESC]
voor het find&replacen van de geselecteerde tekst (!).. wat je na een paar keer binnen een seconde doet.

[ Voor 28% gewijzigd door frickY op 13-10-2005 18:40 ]


Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11:30

Guldan

Thee-Nerd

daar heb je idd gelijk in. Maarja ik heb met php toch het motto. never trust user input.

@fricky: ikzelf heb sporadisch ook nog wel eens wat pph code in mijn templates staan. Dus ik kan niet zomaar klakkeloos alles vervangen.

Maar idd. point taken ;)

[ Voor 39% gewijzigd door Guldan op 13-10-2005 18:38 ]

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

ik gebruik ook de derde variant, is ook veel overzichtelijker.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • Solopher
  • Registratie: December 2002
  • Laatst online: 11-09 14:55
over semantiek gesproken:

Maak css bestand, maak een class.

PHP:
1
<div class="cssclass"><?=$naam;?><br /></div>


Helaas geen php tags, deze probeer ik zelf altijd zoveel mogelijk te gebruiken.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Een class voegt ook geen semantiek toe; semantiek moet uit het gebruik van je elementen komen, en een div zegt ook niet veel. Ik zou dan eerder een paragraaf ofzo gebruiken.
Maar dit is offtopic, hoewel het gebruik van font-tags inderdaad wel passé is :P

Overigens @frickY: single quotes om attributen zijn in HTML gewoon toegestaan; het is echter niet altijd handig (zie mijn eerdere voorbeeld, en geloof me - ik heb dat fout zien gaan op menige grote site, zelfs op tnet).

[ Voor 25% gewijzigd door crisp op 13-10-2005 19:02 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ben ik dan de enige die in het genereren van html uberhaupt niks geeft om het schrijven van newlines? Nogal onzinnig als je het mij vraagt.

Verder voor het gebruik van variabelen in strings. Je kunt ze wel tussen dubbele quotes zetten, maar als je eens een keer wat wil doen met die variabele (htmlentities om maar iets veelvoorkomends te noemen) dan moet je hem er alsnog weer tussen concatenaten.

Kies dan liever 1 vorm, ipv dat je uiteindelijk een mix overhoudt van 'inline' variabelen (om maar een term te verzinnen) en concatenaten.

[ Voor 60% gewijzigd door Bosmonster op 13-10-2005 19:04 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Bosmonster schreef op donderdag 13 oktober 2005 @ 19:02:
Ben ik dan de enige die in het genereren van html uberhaupt niks geeft om het schrijven van newlines? Nogal onzinnig als je het mij vraagt.
Ik vind het toch wel erg prettig om in elk geval de mogelijkheid te hebben om een beetje gestructureerde HTML-code op te kunnen vragen; zeker als daar ergens een foutje in zit waar een browser z'n nek over breekt... (hoewel er natuurlijk ook wel tools zijn om vanuit een single-line HTML nette ge-indente HTML te genereren).
In produktie-code is het inderdaad niet erg zinvol en kan je ze er wel uitstrippen.

[ Voor 18% gewijzigd door crisp op 13-10-2005 19:05 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

crisp schreef op donderdag 13 oktober 2005 @ 19:04:
[...]

Ik vind het toch wel erg prettig om in elk geval de mogelijkheid te hebben om een beetje gestructureerde HTML-code op te kunnen vragen; zeker als daar ergens een foutje in zit waar een browser z'n nek over breekt... (hoewel er natuurlijk ook wel tools zijn om vanuit een single-line HTML nette ge-indente HTML te genereren).
In produktie-code is het inderdaad niet erg zinvol en kan je ze er wel uitstrippen.
We zorgen altijd dat de html eerst werkt, voordat we er iets van backend mee gaan doen. De html is dan altijd werkend en netjes.

Bovendien gaat mijn voorkeur voor bijvoorbeeld het genereren van tabellen uit naar het uit de php-tags springen. Dan zien collega's in wysiwyg editors als dreamweaver er tenminste ook nog wat van ipv een zwaar scrambled stuk code.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Bosmonster:
Ben ik dan de enige die in het genereren van html uberhaupt niks geeft om het schrijven van newlines? Nogal onzinnig als je het mij vraagt.
Nee hoor, same here.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Bosmonster schreef op donderdag 13 oktober 2005 @ 19:02:

Ben ik dan de enige die in het genereren van html uberhaupt niks geeft om het schrijven van newlines? Nogal onzinnig als je het mij vraagt.
Newlines kunnen mij ook niet interesseren, behalve als het om HTML gaat die misschien weleens gemaild zou kunnen worden ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Newlines interesseren mij wel degelijk. Zeker als je moet bughunten in een bestaande applicatie, is het gewoon verdomd prettig dat de HTML juist geidenteerd is.

Kijk bv. eens in de source van tweakers.net, of in de source van deze http://www.vandermaas.nl.

Die laatste niet te streng bekijken overigens, is nog een site uit mijn beginperiode en dus lang niet perfect qua code etc. De site komt geheel uit een database, maar dat zie je in de html amper terug. De enige punten waar je het terugziet, is waar het edit-component wat gebruikt is voor het CMS het niet goed doet.

Wat betreft de vraag uit de TS.. waarom enkele quotes uberhaupt gebruiken? Ik persoonlijk vind dit de netste wijze:
PHP:
1
echo "ik wil iets zeggen, en het is:\n" . $str_wat_ik_wil_zeggen . "\n";


Maar in de praktijk gebruik ik dan meestal:
PHP:
1
printf("ik wil iets zeggen, en het is\n%s\n", $str_wat_ik_wil_zeggen);


Dit is imo nog netter, daar je dan makkelijker teksten kunt verzamelen in resourcefiles, bv. voor vertaling.

Acties:
  • 0 Henk 'm!

Verwijderd

Dubbele quotes en printf samen zijn best irritant. Neem bijvoorbeeld:
PHP:
1
printf ( "<h1 class=\"%2\$s\">%1\$s</h1>", $title, $theme );

Het wordt al gauw een onleesbare brei.

Overigens wint printf al gauw van concatenaten, als het om snelheid gaat. Twee variabelen, en printf is in de meeste gevallen al sneller.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op donderdag 13 oktober 2005 @ 20:42:
Dubbele quotes en printf samen zijn best irritant. Neem bijvoorbeeld:
PHP:
1
printf ( "<h1 class=\"%2\$s\">%1\$s</h1>", $title, $theme );

Het wordt al gauw een onleesbare brei.
Zou je bovenstaande dan ook niet beter zo kunnen doen?

PHP:
1
  <h1 class="<?= $title ?>"><?= $theme ?></h1>


of

PHP:
1
  printf ( "<h1 class=\"%s\">%s</h1>", $title, $theme );

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

hezik:
Zou je bovenstaande dan ook niet beter zo kunnen doen?
't Gaat natuurlijk om 't principe van de argument-swapping die met een $ gebeurt. Waarom ze daar dan ook een $ voor verzinnen, mag joost weten, maar goed.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Ik gebruik normaal een template engine, dus voor website's heb ik dit probleem nooit. Zodra ik ga werken met strings, om dingen aan elkaar te plakken (header(), mail()) dan gebruik ik de volgende methode:
PHP:
1
$string = 'fooBAR'."\r\n";

Mocht in toch ergens iets van HTML moeten echoén (waar ik eigenlijk op tegen ben, html hoort niet in de php file te staan), dan kies ik voor de volgende methode:
PHP:
1
2
3
4
$tmp_enter = (isset($_GET['debug']))?"\r\n":''; //If your debugging
define (RN, $tmp_enter); //Define -> Return Newline
$string = 'Dit is een string<br>'.RN;
$string .= 'Meer zooi'.RN;

Zo kan je tijdens het debuggen wel de goeie HTML zien, met newlines. Dan kan je dingen tenminste terug vinden. Voor een end-user vind ik het "vaak" niet echt belangrijk of hij mijn HTML kan lezen, en dan kies ik soms voor deze optie. Dan kunnen users de HTML niet zo makkelijk terug vinden, zonder een goed programma of uren kloten.
Voor telnet define ik RN dus vast, zonder debug waarde, net als voor mail. Maar voor HTML is het wel handig soms.

Ik plaats op het moment mijn SQL code nog in de PHP file, maar eigenlijk denk ik dat het netter is dat die code in aparte SQL bestanden staat. Die ik dan weer parse met printf of een template parser.

Acties:
  • 0 Henk 'm!

  • UltimateB
  • Registratie: April 2003
  • Niet online
Kom net thuis van werk en zit even door te lezen, printf() is mij nog nooit opgevallen, maar na een paar van de post hier gelezen te hebben denk ik dat dat best handig zou kunnen zijn. Helpt inderdaad bij verduidelijken van iig html rotzooi :)

"True skill is when luck becomes a habit"
SWIS


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op vrijdag 14 oktober 2005 @ 00:22:

Mocht in toch ergens iets van HTML moeten echoén, dan kies ik voor de volgende methode:
Mocht je code echt te rommelig zijn, dan kun je met de DOM inspector van Mozilla heel wat zien. En we hebben ook nog HTML Tidy.
(waar ik eigenlijk op tegen ben, html hoort niet in de php file te staan)
Hoort is een groot woord. Ik zou het anders willen zeggen. Je moet proberen te zorgen dat je eerst zoveel mogelijk gegevens verwerkt, en daarna pas voor de presentatie te zorgen. Of je dat nu in een losse template engine doet, of met de bestaande PHP functionaliteit, maakt daarbij niet uit. Template engines hebben soms voordelen (en vaak ook niet), maar die hebben niets te maken met het scheiden van PHP en HTML.

Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Wat ik zelf altijd doe (maar ik PHP niet meer zo vaak eigenlijk, dus mijn manier kan achterhaald zijn):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
define('n', "\n");
define('t', "\t");
define('r', "\r");

echo '<textarea class="verhaaltje">';
echo $sName . ' loopt door het bos.' . n;
echo 'Hij kwam een ' . $sMeet . ' tegen.' . n;
echo 'En ze leefden nog lang en gelukkig.';
echo '</textarea>';

/*
$sTypeBrood = 'volkoren';
echo "$sTypeBroodbrood"; // geen volkorenbrood, maar undefined variabele
*/
?>



Dubbele quotes gebruik ik zoveel mogelijk niet, want ze vertragen. :) Vandaar die 3 defines. En natuurlijk variabelen NOOIT binnen quotes.. Lijkt me logisch.

[ Voor 50% gewijzigd door Tanuki op 14-10-2005 12:52 . Reden: PHP tags ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

ik ben een faache php'er..
als ik gewoon simpele text echo dan gebruik ik enkele quotes
als ik variable in me echo doe dan gebruik ik dubbele quotes, dit heeft iemand mij eens verteld en nu heb ik dat mezelf ook aangeleerd, het boeit me eigelijk niet zo heel erg of ik dubbele of enkele quotes gebruik

(mwa moet niet liegen enkele quotes zijn makkelijker :9)
Pagina: 1