标记器在php中不能正常工作

标记器在php中不能正常工作,php,tokenize,Php,Tokenize,如果不添加PHP打开/关闭标记,注释将是t\u INLINE\u HTMLtoken 请看下面的示例 更新: 如果您发布的PHP代码nl2br没有意义,因为它会在代码中添加标记。 请尝试以下操作: <?php $input = nl2br($_POST['input']); $newStr = ''; $commentTokens = array(T_COMMENT); if (defined('T_DOC_COMMENT')) $commentTokens[] = T_DOC_COMM

如果不添加PHP打开/关闭标记,注释将是
t\u INLINE\u HTML
token

请看下面的示例

更新:

如果您发布的PHP代码
nl2br
没有意义,因为它会在代码中添加

标记。 请尝试以下操作:

<?php
$input = nl2br($_POST['input']);
$newStr  = '';
$commentTokens = array(T_COMMENT);
if (defined('T_DOC_COMMENT'))
$commentTokens[] = T_DOC_COMMENT; // PHP 5
if (defined('T_ML_COMMENT'))
$commentTokens[] = T_ML_COMMENT;  // PHP 4
$tokens = token_get_all($input);
foreach ($tokens as $token) {    
if (is_array($token)) {
    if (in_array($token[0], $commentTokens))
        continue;
    $token = $token[1];
}
/*test*/
    $newStr .= $token;
}
echo $newStr;
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<textarea name="input" id="" cols="50" rows="30"></textarea>
<input type="submit">
</form>
$input='';
更新2:

如果源代码仅为HTML,则使用DOM解析器。请参见此处的示例:


如果源代码是PHP和HTML的混合,那么还需要标记器和DOM解析器的混合。因此,您将使用您拥有的代码和您获得的内容作为标记
T_INLINE_HTML
您将使用DOM解析器进行解析。

是PHP还是HTML代码,还是与表单一起发布的混合代码?好的,但是
nl2br
没有意义。请稍后查看我的更新。顺便问一下,它与HTML或混合格式的效果如何?
$input = '<?php '.$_POST['input'].' ?>';