ich bastel mir gerade einen highlighter, der bis jetzt fast richtig funktioniert... er macht alles richtig, aber die strings werden nicht richtig highgelightet...
Das ganze mache ich mit Tokens...
der teil der dafür zuständig ist sollte das sein:
Code: Alles auswählen
case 'T_STRING':
$highlightet .= "<font color='#0000ff'>".$token[1]."</font>";
break;
das ganze könnt ihr auch lokal testen, indem ihr die viewtopic.php ins gleiche verzeichnes von dem script tut... dan werdet ihr sehen was ich meine...
Code: Alles auswählen
<?php
$text = file_get_contents('viewtopic.php');
$text = token_get_all($text);
$highlightet = '';
foreach($text as $token)
{
if(!is_array($token))
{
$highlightet .= "<font color='#ff0000'>".htmlentities($token)."</font>";
}
else
{
switch(token_name($token[0]))
{
case 'T_OPEN_TAG':
$highlightet .= "<font color='#ff0000'><b>".htmlentities($token[1]) . "</b></font>";
break;
case 'T_CLOSE_TAG':
$highlightet .= "<font color='#ff0000'><b>".$token[1]. "</b></font>";
break;
case 'T_STRING':
$highlightet .= "<font color='#0000ff'>".$token[1]."</font>";
break;
case 'T_CONCAT_EQUAL':
$highlightet .= "<font color='#000080'>".$token[1]."</font>";
break;
case 'T_INT_CAST':
$highlightet .= "<font color='#ff0000'>".substr($token[1], 0, 1)."</font><b>".substr($token[1], 1, 3)."</b><font color='#ff0000'>".substr($token[1], 4, 1)."</font>";
break;
case 'T_ABSRACT':
case 'T_ARRAY':
case 'T_AS':
case 'T_ECHO':
case 'T_INCLUDE':
case 'T_IF':
case 'T_ELSE':
case 'T_ELSEIF':
case 'T_FOR':
case 'T_FOREACH':
case 'T_ISSET':
case 'T_EMPTY':
case 'T_WHILE':
case 'T_UNSET':
case 'T_LIST':
case 'T_CONTINUE':
case 'T_NEW':
$highlightet .= "<b>".$token[1]."</b>";
break;
case 'T_VARIABLE':
$highlightet .= "<font color='#800080'>".$token[1]."</font>";
break;
case 'T_FILE':
case 'T_FUNC_C':
case 'T_CLASS_C':
$highlightet .= "<font color='#800080'><b>".$token[1]."</b></font>";
break;
case 'T_COMMENT':
case 'T_DOC_COMMENT':
$highlightet .= "<font color='#c0c0c0'>".$token[1]."</font>";
break;
case 'T_DOUBLE_ARROW':
case 'T_BOOLEAN_AND':
case 'T_BOOLEAN_OR':
case 'T_IS_EQUAL':
case 'T_IS_IDENTICAL':
case 'T_OBJECT_OPERATOR':
case 'T_IS_NOT_EQUAL':
case 'T_IS_NOT_IDENTICAL':
$highlightet .= "<font color='#ff0000'>".$token[1]."</font>";
break;
case 'T_LNUMBER':
$highlightet .= "<font color='#008000'>".$token[1]."</font>";
break;
default:
$highlightet .= htmlentities($token[1]);
break;
}
}
}
echo nl2br($highlightet);
?>