Странный глюк с ?>

Nimous

Guest
Странный глюк с ?>

Наткнулся вчера на интересную ситуацию.

Дело в том, что последовательность ?>
в скрипте, которая означает сами знаете что, ЧИТАЕТСЯ за однострочными коментариями.
Причём неважно, в каком контексте она находится. Если на строку, где она есть,
поставить комментарий, она будет восприниматься, как конец PHP-кода со всеми вытекающими.

Вот примеры:
PHP:
<?php
//?>
echo "asdf";
?>
и
PHP:
<?php
//?><?
echo "asdf";
?>
Посмотрите, что получится:)

Win32/Apache 1.3+mod+php 4.3.10
-----------------------------------------------
Не то, чтобы это было что-то критичное, просто любопытно...
 

SiMM

Новичок
> Причём неважно, в каком контексте она находится
Клевета.
PHP:
<?="?>важно<?"?>
Или вот ещё
PHP:
<?
/*?>*/
echo "asdf";
?>
 

Profic

just Profic (PHP5 BetaTeam)
The "one-line" comment styles only comment to the end of the line or the current block of PHP code, whichever comes first. This means that HTML code after // ?> WILL be printed: ?> skips out of the PHP mode and returns to HTML mode, and // cannot influence that. If asp_tags configuration directive is enabled, it behaves the same with // %>. However, </script> tag doesn't escape PHP mode in one-line comment.
(c) [m]language.basic-syntax.comments[/m]

От себя добавлю, что основная засада тут это регулярки с run-once паттерном. Это который (?>...). И если закомментарить строку с регом, содержащим такой паттерн, то получится немного не, что хотели :).
В общем, комментировать код тоже нужно с умом.
 

Nimous

Guest
SiMM
У меня первый раз сработало как-то так:
//echo("?>");
т.е. это была СТРОКА.
Как-раз поэтому я назвал это глюком:)

..Да... Комментарии -только однострочные.

-~{}~ 16.11.05 21:05:

Во всяком случае, оказывается, всё уже давно описано.
Найти баг в PHP не удалось:)
 

SiMM

Новичок
> т.е. это была СТРОКА.
Заблуждаешься. Это был комментарий ;)
 
Сверху