Я нашел решение. Обычно пробелы игнорируются после открытых тегов php: <?php
, <?
, но не <?=
UPDATE
Это заняло 2 часа, но я понял поведение :).
<?php
и <?
также получают следующий символ пробела или символ новой строки (предшествует \ r или нет). Остальные пробелы анализируются в других токенах, но группируются, если они следуют за первым пробелом. Позвольте мне лучше объяснить ваши примеры:
<?php echo "test"?>
Жетоны: "<?php
", "echo
" ....
<?php echo "test"?>
Жетоны: "<?php
", "(оставшиеся пробелы)", "echo
" ...
Еще один пример с новыми строками:
<?php
echo "test"
?>
Жетоны: "<?php
\ n", "echo
" ....
<?php
echo "test"
?>
Жетоны: "<?php
\ n", "\ n \ n (оставшиеся новые строки)", "echo
" ....
Я тестировал его весь день, поэтому я уверен, что он так себя ведет.