[erledigt]strings highlighten

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

[erledigt]strings highlighten

Beitrag von Ambience »

Hallo,

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; 
die strings sollten dann alle in blau erscheinen... aber er macht das nicht, stattdessen macht er andere sachen blau...
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);
?>
Zuletzt geändert von Ambience am 28.05.2007 17:28, insgesamt 1-mal geändert.
CoReY

Beitrag von CoReY »

Hallo,
bevor du hier das Rad völlig neu erfindest: Soll dies ein universeller Highlighter für div. Anwendungszwecke werden, oder ausschließl. für PHP ausgelegt?

In letzterem Fall s. z. B. "highlight_file()" (bzw. allg. "highlight_string()").
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

die funktionen sind mit verlaub gesagt KACKE, weil ich meine eigenen Farben benutzen will, ich brauch ja nurnoch das er diese strings richtig highlightet...
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Du kannst die Farben selbst einstellen :wink:
Dafür gibt es in der php.ini die Einstellungen highlight.* - einfach mal suchen.
Falls du auf die php.ini keinen Zugriff hast, kannst du diese Einstellungen auch durch eine .htaccess Datei ändern oder durch die PHP Funktion ini_set() :wink:


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

das ist aber nicht das was ich will.. ach egal dann versuch ichs einfach alleine weiter.

so... gesuchter token hieß: T_CONSTANT_ENCAPSED_STRING
Antworten

Zurück zu „Coding & Technik“