Ik kwam in PHP 4.3.9 wat vreemde dingen tegen met het parsen van PHP-tags (<? ?>) in strings met dubbele quotes en comments... Heb gezocht hier en op de PHP-site (incl. comments) maar kon niets vinden over dit vreemde gedrag, vandaar dit topic. Misschien zie ik iets stoms over het hoofd, maar even 2 code voorbeeldjes:
Geeft als resultaat:
De heredoc word dus afgebroken op <?... Imho zou de string daar gewoon verder moeten gaan, maar dat gebeurd dus niet...
Nog een vreemder voorbeeld:
Dit codevoorbeeld knalt eruit met een parse-error... Als je de comment //"<? ?>" echter weghaalt draait het prima. Vreemd toch dat PHP zelfs in de comment dus op zijn bek gaat over die "?>" ?
PHP:
1
2
3
4
5
6
7
8
9
10
11
| <?PHP error_reporting(E_ALL); $str = <<<TEST Dit is een test met de heredoc syntax ?>... goh knallen we uit PHP? <? Of toch weer verder? TEST; echo $str; ?> |
Geeft als resultaat:
Dit is een test met de heredoc syntax ?>... goh knallen we uit PHP?
De heredoc word dus afgebroken op <?... Imho zou de string daar gewoon verder moeten gaan, maar dat gebeurd dus niet...
Nog een vreemder voorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| <?PHP error_reporting(E_ALL); $str = 'goh een {varretje} in een stukje tekst...'; //test 1x zo en delete daarna dit comment eens... //"<? ?>" //replace variable statements {$variable} $str = preg_replace("/\{([a-z]+)\}/", "<? echo \$$1; ?>", $str); echo $str; ?> |
Dit codevoorbeeld knalt eruit met een parse-error... Als je de comment //"<? ?>" echter weghaalt draait het prima. Vreemd toch dat PHP zelfs in de comment dus op zijn bek gaat over die "?>" ?
[ Voor 17% gewijzigd door Morrar op 15-03-2005 18:07 ]