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 (IMG:
http://forum.php.pl/style_emoticons/default/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:
<?php
$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) ';
$words['clauseL'] = ' (AND|INNER JOIN|OR|OUTER JOIN|LEFT JOIN|RIGHT JOIN|and|inner join|or|outer j
oin|left join|right join) ';
$words['clauseI'] = ' (AS|ON|DESC|DISTINCT|SQL_CALC_FOUND_ROWS|as|on|desc|distinct|sql_calc_found_
rows) ';
$words['function'] = ' (AVG|MAX|IF|CONCAT|DATE_FORMAT|SUBSTRING|avg|max|if|concat|date_format|subst
ring) ';
$words['operator'] = '([<>]{0}=|!=|<>|>[=]{0}|<[=]{0}|>=|<=|\+|-|\/)';
$words['numeric'] = '([0-9]+)';
$words['string'] = '('[^']*')';
$words['comma'] = '(,)';
$words['period'] = '(\.)';
$words['asterix'] = '(\*)';
$words['open'] = '(\()';
$words['close'] = '(\))';
$words['key'] = '(\`[^']*\`)';
'clauseG' => array('color: #993366; font-weight: bold;', true), 'clauseL' => array('color: #3366FF; font-weight: bold;', true), 'clauseI' => array('color: #00CCFF; font-weight: bold;', true), 'function' => array('color: #0000FF; font-weight: bold;', true), 'operator' => array('color: #3366FF; font-weight: bold;', false), 'numeric' => array('color: ; font-weight: bold;', false), 'comma' => array('color: #3366FF; font-weight: bold;', false), 'period' => array('color: #3366FF; font-weight: bold;', false), 'asterix' => array('color: #3366FF; font-weight: bold;', false), 'open' => array('color: #3366FF; font-weight: bold;', false), 'close' => array('color: #3366FF; font-weight: bold;', false), 'string' => array('color: #3366FF; font-weight: bold;', false), 'key' => array('color: #339966; font-weight: bold;', false) );
$re_query = $query;
foreach($words AS $key=>$expr)
{
$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); }
?>
No, ale coś nie działa najlepiej (IMG:
http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Pozdrawiam
Ten post edytował Spirit86 16.03.2006, 13:17:19