|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-05-23 19:09 UTC] simon at studio24 dot net
hi there,
this may be obscure and I'm not sure if it is a bug but I've experienced a problem with populating a variable with a HERE statement (ie. $variable = <<< EOD). As far as I was aware the variable is supposed to be populated with anything after the first EOD line and before the ending EOD; line.
This HERE statement does not work if you put a slash before a left curly brace ( \{ ) . It's fine with a right curly brace ( \} ). looking at the script below version 1 does not display the first slash, version 2 does (only because I escaped the slash first).
This seems to be a bug, so I hope this is the right place to inform you about it.
best wishes
Simon R Jones
simon@studio24.net
www.studio24.net
Configure command: './configure' '--with-gd' '--enable-track-vars' '--with-apxs=/usr/sbin/apxs' '--enable-sysvsem' '--enable-sysvshm' '--with-zlib' '--prefix=/usr' '--with-config-file-path=/etc/httpd/conf' '--enable-memory-limit' '--with-pgsql=/usr' '--with-db2=/usr' '--with-gdbm=/usr' '--with-ndbm=/usr' '--with-dbase' '--enable-trans-sid' '--with-xml=/usr' '--enable-debugger' '--enable-ftp' '--with-ttf' '--with-jpeg-dir=/usr' '--enable-bcmath' '--with-openssl' '--enable-trans-sid' '--with-mysql=/usr' '--with-xpm-dir=/usr/X11R6' '--with-png-dir=/usr' '--with-imap' '--with-dom' '--with-imap-ssl' '--with-mhash=/usr' '--with-mcrypt=/usr'
example script (online at http://dev.studio24.net/test.php ):
<?
$content .= <<< EOD
<tt>
\{[A-Z0-9][A-Z0-9_]{1,}\} more text \" \ \\ \{ \} \&
</tt>
EOD;
$content2 .= <<< EOD
<tt>
\\{[A-Z0-9][A-Z0-9_]{1,}\} more text \" \ \\ \{ \} \&
</tt>
EOD;
echo "version 1: $content<br>\n
version 2: $content2";
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 23 03:00:01 2025 UTC |
Simpler code for this report. Heredoc block supposed to parse just like double quoted strings, but it does not. (PHP4.1.0) Is this a bug or feature? ?php echo '<pre>'; $heredoc = <<< EOD \{ EOD; $string = "\{"; echo "heredoc : $heredoc\n"; echo "string : $string\n"; ?>Problem still occurs with PHP 4.3.5 (version updated in edit submission form) Test script prints: heredoc : { string : \{ I am presuming this is because curly braces can be used to include more complex variables in a heredoc syntax, ie. {$this->var['key']} See: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc PHP seems to be spotting \{ and treating this as an escaped curly brace, even though there is no matching closing brace. best wishes, Simon