ID:               41281
 User updated by:  fantasticjamieburns at hotmail dot com
 Reported By:      fantasticjamieburns at hotmail dot com
 Status:           Open
 Bug Type:         Documentation problem
 Operating System: Linux/Windows
 PHP Version:      4.4.7
 New Comment:

Thanks for taking the time to look at this anyway.

For anyone else reading this in the future and thinking this is crazy
behaviour this quickly gets around it for evaluated code:

$source = preg_replace('#<\?php (.*?) \?>\n#', "<?php \\1 ?>\n\n",
$source);

$source = preg_replace('#<\?php (.*?) \?>\r\n#', "<?php \\1
?>\r\n\r\n", $source);

:o)


Previous Comments:
------------------------------------------------------------------------

[2007-05-04 11:26:49] [EMAIL PROTECTED]

The manual also states (at
http://php.net/manual/en/language.basic-syntax.instruction-separation.php):

"The closing tag for the block will include the immediately trailing
newline if one is present."

... and this has been the case forever.

However, I agree that it would probably be useful to modify the text
you quoted to read something like:

"... when PHP hits the ?> closing tags, it simply starts outputting
whatever it finds (except for an immediately following newline) until
it hits another opening tag."

... so I'm leaving this open as a Documentation Problem!

------------------------------------------------------------------------

[2007-05-04 11:21:37] fantasticjamieburns at hotmail dot com

OK, thanks for classifying this as a documentation problem.

If it is indeed the case that a PHP end tag considers a newline to be
"part of the end tag" then I must say that is really dumb.

It breaks all sorts of simple things like:

<pre>
- <?php echo("jack"); ?>
- <?php echo("jill"); ?>
</pre>

Now why on earth would PHP think it has the right to take away a
newline character OUTSIDE of the end tag? In every other case the end
tag finishes with the less-than symbol, no?

Now, if a newline is now part of the close tag, why not a space?

<?php echo('jack'); ?> <?php echo("jill"); ?>

Does the space now also get taken by PHP? Or is it outside the PHP
blocks? And if it is outside, is it not because it is beyone the
less-than symbol of the first block?

------------------------------------------------------------------------

[2007-05-04 11:03:36] [EMAIL PROTECTED]

Reclassified as docu problem.


------------------------------------------------------------------------

[2007-05-04 11:02:38] [EMAIL PROTECTED]

But the new line is part of the closing tag. This is however not
properly documented here:
http://www.php.net/manual/en/language.basic-syntax.php

------------------------------------------------------------------------

[2007-05-04 10:51:43] fantasticjamieburns at hotmail dot com

I have been developing with PHP since version 3.

I have read the manual many times.

The manual states:

"... when PHP hits the ?> closing tags, it simply starts outputting
whatever it finds until it hits another opening tag."

NOW...

As I have highlighted, PHP is not outputting everything after the
closing tag in the specific case where there is a newline immediately
after the closing tag.

So... either tha manual is wrong or the parser is broken.

Did you even bother to try the simple test case I gave?

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/41281

-- 
Edit this bug report at http://bugs.php.net/?id=41281&edit=1

Reply via email to