ID: 31787 User updated by: codeslinger at compsalot dot com Reported By: codeslinger at compsalot dot com -Status: Bogus +Status: Closed Bug Type: Scripting Engine problem Operating System: Linux PHP Version: 4.3.10 New Comment:
okay, thanks. But I still think it's strange for the parser to be wasting time, parsing code inside of a comment, when all it needs to be doing is looking for the end of line. Previous Comments: ------------------------------------------------------------------------ [2005-02-03 18:53:10] [EMAIL PROTECTED] This is not discussion forum. Discuss on the mailing lists. Documentation can be found at: http://www.php.net/manual/en/language.basic-syntax.comments.php Read the last paragraph on that page. ------------------------------------------------------------------------ [2005-02-03 18:49:00] codeslinger at compsalot dot com Thank you for your response. But I wanted some further discussion on this. I spent a *lot* of time banging my head against the wall trying to track down a nonsensical error message. I took the totally legitimate statment of fwrite($fp, "<?php echo 'Hello World'; ?>" ); And commented it out with //. And instead of ignoring the comment, php decided to interpet it as a script close tag. This bogus parsing behavior lead to major frustration and confusion; and wasted time. Now my understanding of // is that everything up to the end of the line is supposed to be ignored. Not only is the ?> within a comment, but it is also contained inside of quotes... Why is the parser spinning it's wheels parsing the contents of a comment, when all it needs to be doing is a skip to end of line? ------ Per your suggestion, I did a search for "html containment" I did not find anything. I did find and read chapter 71, but saw nothing applicable. I have actually read quite a bit of the manual, but as you know it is huge and navigation can be tricky, if you could give me a more specific link I would appreciate it. ---------- Please understand that I LOVE PHP and I am very very greatful for all the hard work that people have put in. I am not intending to be overly critical. ------------------------------------------------------------------------ [2005-02-01 09:24:03] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Please read the docs on html containment - this is expected. ------------------------------------------------------------------------ [2005-02-01 00:46:55] codeslinger at compsalot dot com I doubt it makes a difference, but this is the CLI version of php. ------------------------------------------------------------------------ [2005-02-01 00:36:23] codeslinger at compsalot dot com Description: ------------ Here is a bizarre script parsing problem The // comment operator is supposed to ignore everything on that line. But if you happen to do something like // fwrite($pipes[0], "<?php echo 'Hello World'; ?>" ); Then you start getting all kinds of strange parse errors. I isolated the problem. What is happening is that // ?> or even // "?>" is being interpeted as the script terminator. Happily /* ?> */ does work Reproduce code: --------------- <?php // ?> echo "we get an error because it sees the ?> in the comment"; ?> # The above will fail, but this works <?php /* ?> */ echo "the ?> is properly ignored"; ?> Expected result: ---------------- anything and everything following a // to be ignored Actual result: -------------- Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /foo/phpchild/parent1.php on line 29 Parse error: parse error, unexpected ')', expecting ',' or ';' in /foo/phpchild/parent1.php on line 29 The actual error depends on the specific code following the termination point. This thing really had me baffeled for awhile... I commented out several lines of code and started getting parse errors about missing parens and semicolons, etc. Depending upon what I commented out, the error would change, which made it very hard to track down. Naturally I assumed I had made a mistake, mismatched quotes etc. Took me quite a bit of head banging to finally figure out what was going on. ============= "Are you sure that you searched before you submitted your bug report?" By the way.... You don't allow searching for specific characters such as // and ?> this makes it very hard to check for duplicates of this bug.... I note that your auto-dup detector did search for // in fact it did a very impressive job of finding similar bugs. But no dups. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=31787&edit=1