Nikita Popov


PHP RFC: Remove alternative PHP tags


This RFC proposes the removal of ASP tags (<%) and script tags (<script language=php>) as a means of entering or leaving PHP mode.

The following syntactical elements are removed:

  • <% opening tag
  • <%= opening tag with echo
  • %> closing tag
  • (<script\s+language\s*=\s*(php|"php"|'php')\s*>)i opening tag
  • (</script>)i closing tag

The listed opening tags will no longer enter PHP mode and the listed closing tags will no longer leave PHP mode.

Additionally the asp_tags ini directive is removed. Trying to enable asp_tags will result in a core error.

This RFC does not remove short opening tags (<?) or short opening tags with echo (<?=).


  • The alternative PHP tags have never gained any significant degree of usage. Their usage has been discouraged since forever.
  • The ASP tags depend on an ini directive and as such are non-portable. We generally try to move away from ini-dependent language behavior. With ASP tags removed, short open tags should be the last.
  • ASP tags clash with underscore.js templates and it's not possible to disable asp tags using ini_set().
  • Supporting different tags allows very weird mixing like <script language=php> echo "foo" %>

Porting tool

To simplify porting of legacy code using the alternative tags, a porting script is provided. The script takes a directory and will replace ASP and script tags in all .php files contained in this directory:

php -d asp_tags=1 portAlternativeTags.php dir/


An option needs 2/3 votes to win

Remove alternative PHP tags in PHP 7? (76.5% approved)
User Vote
ajf No
auroraeosrose Yes
brianlmoon Yes
bwoebi Yes
crodas Yes
datibbaw Yes
daverandom Yes
derick No
dsp No
fa No
frozenfire Yes
guilhermeblanco Yes
gwynne Yes
jedibc Yes
jwage Yes
kalle Yes
kassner Yes
krakjoe Yes
kriscraig Yes
leigh Yes
levim Yes
lstrojny Yes
mariuz Yes
nikic Yes
olemarkus Yes
patrickallaert Yes
peehaa Yes
pollita No
rasmus No
rdlowrey Yes
rogeriopradoj Yes
salathe No
stas No
tyrael Yes