Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Kolorowanie Składni
Forum PHP.pl > Forum > PHP
Spirit86
Witam.
Napisałem skrypt, w którym chciałbym pokolorować pytania do SQL. Zanalazłem klasęklasę, jednakże wydaje mi się ona zbyt rozbudowana (4 pliki). Przpomniałem sobie, że tu na forum też jest kolorowanie składni SQL smile.gif. Czy to sami napisaliście? Można pobrać gdzieś tę funkcję, no i oczywiście, czy można ją wykorzystać we własnych skryptach?

Zdecydowałem się na napisanie tego postu ze względu na to, że może któryś z użytkowników forum zna taką funkcję / sam ją napisał.

Napisałem coś takiego:
  1. <?php
  2. $words = array();
  3.  $words['clauseG'] = ' (CREATE|TABLE|SELECT|FROM|WHERE|ORDER BY|GROUP BY|LIMIT|INSERT INTO|VALUES|U
    PDATE|SET|create table|select|from|where|order by|group by|limit|insert into|valu
    es|update|set) '
    ;
  4.  $words['clauseL'] = ' (AND|INNER JOIN|OR|OUTER JOIN|LEFT JOIN|RIGHT JOIN|and|inner join|or|outer j
    oin|left join|right join) '
    ;
  5.  $words['clauseI'] = ' (AS|ON|DESC|DISTINCT|SQL_CALC_FOUND_ROWS|as|on|desc|distinct|sql_calc_found_
    rows) '
    ;
  6.  $words['function'] = ' (AVG|MAX|IF|CONCAT|DATE_FORMAT|SUBSTRING|avg|max|if|concat|date_format|subst
    ring) '
    ;
  7.  $words['operator'] = '([<>]{0}=|!=|<>|>[=]{0}|<[=]{0}|>=|<=|\+|-|\/)';
  8.  $words['numeric'] = '([0-9]+)';
  9.  $words['string'] = '('[^']*')';
  10.  $words['comma'] = '(,)';
  11.  $words['period'] = '(\.)';
  12.  $words['asterix'] = '(\*)';
  13.  $words['open'] = '(\()';
  14.  $words['close'] = '(\))';
  15.  $words['key'] = '(\`[^']*\`)';
  16.  
  17.  $Style = array(
  18. 'clauseG' => array('color: #993366; font-weight: bold;', true),
  19. 'clauseL' => array('color: #3366FF; font-weight: bold;', true),
  20. 'clauseI' => array('color: #00CCFF; font-weight: bold;', true),
  21. 'function' => array('color: #0000FF; font-weight: bold;', true),
  22. 'operator' => array('color: #3366FF; font-weight: bold;', false),
  23. 'numeric' => array('color: ; font-weight: bold;', false),
  24. 'comma' => array('color: #3366FF; font-weight: bold;', false),
  25. 'period' => array('color: #3366FF; font-weight: bold;', false),
  26. 'asterix' => array('color: #3366FF; font-weight: bold;', false),
  27. 'open' => array('color: #3366FF; font-weight: bold;', false),
  28. 'close' => array('color: #3366FF; font-weight: bold;', false),
  29. 'string' => array('color: #3366FF; font-weight: bold;', false),
  30. 'key' => array('color: #339966; font-weight: bold;', false)
  31.  );
  32.  $re_query = $query;
  33. foreach($words AS $key=>$expr)
  34. {
  35. $re_query = ($Style[$key][1]) ? preg_replace("\"$expr\"", "<span style=\"".$Style[$key][0]."\">\\1</span>", $query) : preg_replace("\"$expr\"", "<span style=\"".$Style[$key][0]."\">\\1</span>", $query);
  36. }
  37. ?>

No, ale coś nie działa najlepiej winksmiley.jpg

Pozdrawiam
Strzałek
zainteresuj się GeSHi
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.