3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php abstract /** */ class /** */ C /** */ { } $php = <<<'EOT' <?php namespace AAA\BBB; use XXX\YYY; // Comment # Comment /* Comment */ /** * @doc */ abstract class C { } EOT; for ($i = 258; $i < 409; ++$i) { $name = token_name($i); # print "$i: $name\n"; } $tokens = token_get_all($php); $readable = ''; foreach ($tokens as $token) { if (is_array($token)) { list($id, $str, $line) = $token; $name = token_name($id); $readable .= "<$id:$name>$str"; } else { $readable .= "<*>$str"; } } print $readable;
based on uSo06
Output for 7.0.0 - 7.1.0, 7.2.0
<379:T_OPEN_TAG><?php <382:T_WHITESPACE> <388:T_NAMESPACE>namespace<382:T_WHITESPACE> <319:T_STRING>AAA<390:T_NS_SEPARATOR>\<319:T_STRING>BBB<*>BBB<382:T_WHITESPACE> <353:T_USE>use<382:T_WHITESPACE> <319:T_STRING>XXX<390:T_NS_SEPARATOR>\<319:T_STRING>YYY<*>YYY<382:T_WHITESPACE> <377:T_COMMENT>// Comment <382:T_WHITESPACE> <377:T_COMMENT># Comment <382:T_WHITESPACE> <377:T_COMMENT>/* Comment */<382:T_WHITESPACE> <378:T_DOC_COMMENT>/** * @doc */<382:T_WHITESPACE> <312:T_ABSTRACT>abstract<382:T_WHITESPACE> <361:T_CLASS>class<382:T_WHITESPACE> <319:T_STRING>C<382:T_WHITESPACE> <*> <382:T_WHITESPACE> <*> <382:T_WHITESPACE>
Output for 7.1.5 - 7.1.10
<379:T_OPEN_TAG><?php <382:T_WHITESPACE> <388:T_NAMESPACE>namespace<382:T_WHITESPACE> <319:T_STRING>AAA<390:T_NS_SEPARATOR>\<319:T_STRING>BBB<*>BBB<382:T_WHITESPACE> <353:T_USE>use<382:T_WHITESPACE> <319:T_STRING>XXX<390:T_NS_SEPARATOR>\<319:T_STRING>YYY<*>YYY<382:T_WHITESPACE> <377:T_COMMENT>// Comment <382:T_WHITESPACE> <377:T_COMMENT># Comment <382:T_WHITESPACE> <377:T_COMMENT>/* Comment */<382:T_WHITESPACE> <378:T_DOC_COMMENT>/** * @doc */<382:T_WHITESPACE> <315:T_ABSTRACT>abstract<382:T_WHITESPACE> <361:T_CLASS>class<382:T_WHITESPACE> <319:T_STRING>C<382:T_WHITESPACE> <*> <382:T_WHITESPACE> <*> <382:T_WHITESPACE>
Output for 5.6.8 - 5.6.28
<376:T_OPEN_TAG><?php <379:T_WHITESPACE> <385:T_NAMESPACE>namespace<379:T_WHITESPACE> <310:T_STRING>AAA<388:T_NS_SEPARATOR>\<310:T_STRING>BBB<*>BBB<379:T_WHITESPACE> <344:T_USE>use<379:T_WHITESPACE> <310:T_STRING>XXX<388:T_NS_SEPARATOR>\<310:T_STRING>YYY<*>YYY<379:T_WHITESPACE> <374:T_COMMENT>// Comment <379:T_WHITESPACE> <374:T_COMMENT># Comment <379:T_WHITESPACE> <374:T_COMMENT>/* Comment */<379:T_WHITESPACE> <375:T_DOC_COMMENT>/** * @doc */<379:T_WHITESPACE> <351:T_ABSTRACT>abstract<379:T_WHITESPACE> <358:T_CLASS>class<379:T_WHITESPACE> <310:T_STRING>C<379:T_WHITESPACE> <*> <379:T_WHITESPACE> <*> <379:T_WHITESPACE>
Output for 5.5.24 - 5.5.35
<374:T_OPEN_TAG><?php <377:T_WHITESPACE> <383:T_NAMESPACE>namespace<377:T_WHITESPACE> <308:T_STRING>AAA<386:T_NS_SEPARATOR>\<308:T_STRING>BBB<*>BBB<377:T_WHITESPACE> <342:T_USE>use<377:T_WHITESPACE> <308:T_STRING>XXX<386:T_NS_SEPARATOR>\<308:T_STRING>YYY<*>YYY<377:T_WHITESPACE> <372:T_COMMENT>// Comment <377:T_WHITESPACE> <372:T_COMMENT># Comment <377:T_WHITESPACE> <372:T_COMMENT>/* Comment */<377:T_WHITESPACE> <373:T_DOC_COMMENT>/** * @doc */<377:T_WHITESPACE> <349:T_ABSTRACT>abstract<377:T_WHITESPACE> <356:T_CLASS>class<377:T_WHITESPACE> <308:T_STRING>C<377:T_WHITESPACE> <*> <377:T_WHITESPACE> <*> <377:T_WHITESPACE>
Output for 5.4.10 - 5.4.45
<372:T_OPEN_TAG><?php <375:T_WHITESPACE> <381:T_NAMESPACE>namespace<375:T_WHITESPACE> <307:T_STRING>AAA<384:T_NS_SEPARATOR>\<307:T_STRING>BBB<*>BBB<375:T_WHITESPACE> <340:T_USE>use<375:T_WHITESPACE> <307:T_STRING>XXX<384:T_NS_SEPARATOR>\<307:T_STRING>YYY<*>YYY<375:T_WHITESPACE> <370:T_COMMENT>// Comment <375:T_WHITESPACE> <370:T_COMMENT># Comment <375:T_WHITESPACE> <370:T_COMMENT>/* Comment */<375:T_WHITESPACE> <371:T_DOC_COMMENT>/** * @doc */<375:T_WHITESPACE> <347:T_ABSTRACT>abstract<375:T_WHITESPACE> <354:T_CLASS>class<375:T_WHITESPACE> <307:T_STRING>C<375:T_WHITESPACE> <*> <375:T_WHITESPACE> <*> <375:T_WHITESPACE>
Output for 5.3.20 - 5.3.29
<368:T_OPEN_TAG><?php <371:T_WHITESPACE> <377:T_NAMESPACE>namespace<371:T_WHITESPACE> <307:T_STRING>AAA<380:T_NS_SEPARATOR>\<307:T_STRING>BBB<*>BBB<371:T_WHITESPACE> <340:T_USE>use<371:T_WHITESPACE> <307:T_STRING>XXX<380:T_NS_SEPARATOR>\<307:T_STRING>YYY<*>YYY<371:T_WHITESPACE> <366:T_COMMENT>// Comment <371:T_WHITESPACE> <366:T_COMMENT># Comment <371:T_WHITESPACE> <366:T_COMMENT>/* Comment */<371:T_WHITESPACE> <367:T_DOC_COMMENT>/** * @doc */<371:T_WHITESPACE> <346:T_ABSTRACT>abstract<371:T_WHITESPACE> <353:T_CLASS>class<371:T_WHITESPACE> <307:T_STRING>C<371:T_WHITESPACE> <*> <371:T_WHITESPACE> <*> <371:T_WHITESPACE>