php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #78441 Parse error due to heredoc identifier followed by digit
Submitted: 2019-08-21 17:06 UTC Modified: 2019-08-21 20:57 UTC
From: cmb@php.net Assigned: cmb (profile)
Status: Closed Package: Scripting Engine problem
PHP Version: 7.3Git-2019-08-21 (Git) OS: *
Private report: No CVE-ID: None
 [2019-08-21 17:06 UTC] cmb@php.net
Description:
------------
If a heredoc/nowdoc identifier is immediately followed by a digit,
it is mistankenly recognized as closing identifier.  While the
documentation on the relaxed heredoc/nowdoc is sparse yet, the
RFC[1] claims:

| The implementation I am proposing avoids this problem by
| checking to see if a continuation of the found marker exists, and
| if so, then if it forms a valid identifier. This means that the
| terminating marker string will only be considered as such if it is
| matched exactly as a standalone, valid symbol (that is also found
| at the start of the line).

Since digits are allowed in identifiers, I think the current behavior
is a bug.

[1] <https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes>

Test script:
---------------
<?php
echo <<<FOO
FOO4
FOO;


Expected result:
----------------
FOO4

Actual result:
--------------
Parse error: syntax error, unexpected '4' (T_LNUMBER), expecting ';' or ',' in %d on line 3

Patches

Add a Patch

Pull Requests

Pull requests:

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-08-21 17:24 UTC] cmb@php.net
The following pull request has been associated:

Patch Name: Fix #78441: Parse error due to heredoc identifier followed by digit
On GitHub:  https://github.com/php/php-src/pull/4591
Patch:      https://github.com/php/php-src/pull/4591.patch
 [2019-08-21 20:56 UTC] cmb@php.net
Automatic comment on behalf of cmbecker69@gmx.de
Revision: http://git.php.net/?p=php-src.git;a=commit;h=310708845ff02b9e252b7a02616290384dd846ba
Log: Fix #78441: Parse error due to heredoc identifier followed by digit
 [2019-08-21 20:56 UTC] cmb@php.net
-Status: Open +Status: Closed
 [2019-08-21 20:57 UTC] cmb@php.net
-Assigned To: +Assigned To: cmb
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Tue Oct 22 13:01:29 2019 UTC