MySQL highlighter
Moderator: General Moderators
yes i have been trying and also looking here just in case, but in one of me previous post, nobody really helped me. they just looked at it, then nothing. i had to find out the solution myself. and there could also be some guest that were just surfing the forum, and liked the code, and decided to copy it.
- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
- RobertGonzalez
- Site Administrator
- Posts: 14293
- Joined: Tue Sep 09, 2003 6:04 pm
- Location: Fremont, CA, USA
- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
Whoa whoa whoa. You mean that, in all of this code:
The only thing that works is:

Code: Select all
$sql = str_replace("\n", '<br />', $sql);
$sql = preg_replace("/'(.+?)'/i", "<div style='color:red'> '\\1' </div>", $sql);
$sql = preg_replace('/"(.+?)"/i', "<div style='color:red'> \"\\1\" </div>", $sql);
$sql = preg_replace('/`(.+?)`/i', "<div style='color:red'> `\\1` </div>", $sql);
$sql = str_replace('/=/', "<span style='color: green'>=</span>", $sql);
// $sql = preg_replace("/(*)/", "<div style='color:brown'> \\1 </div>", $sql);
$sql = preg_replace('/^(CREATE|ALTER|DROP)\s+(VIEW|TABLE|DATABASE|SCHEMA)\s+/i', "<div style='color:blue'>$1 $2 </div>", $sql);
$sql = preg_replace('/.(SELECT|UPDATE)\s+/i', "<div style='color:blue'>\\1 </div>", $sql);
$sql = preg_replace('/.(MAX|AVG|SUM|COUNT|MIN|FROM|INTO)\s+/i', "<div style='color:green'> \\1 </div>", $sql);
$sql = preg_replace('/(ASC|DESC|ORDER BY|LIMIT|LEFT|JOIN|WHERE|MODIFY|CHANGE|DISTINCT)/i', "<div style='color:green'> \\1 </div>", $sql);
$sql = preg_replace('/(LIKE|NOT LIKE|REGEXP)/i', "<div style='color:orange'> \\1 </div>", $sql);
$sql = preg_replace('/(INT|VARCHAR|TINYINT|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|CHAR|CHARACTER'.
'|DATE|DATETIME|DEC|DECIMAL|DOUBLE|ENUM|FLOAT|FLOAT4|FLOAT8|INT1|INT2|INT3|INT4|INT8|INTEGER|'.
'LONGBLOB|LONGTEXT|MEDIUMBLOB|MEDIUMTEXT|MEDIUMINT|MIDDLEINT|NCHAR|NUMERIC|REAL|SERIAL|SET|'.
'SMALLINT|TEXT|TIME|TIMESTAMP|TINYBLOB|TINYTEXT|VARBINARY|YEAR|PRIMARY|AUTO INCREMENT)/i', "<div style='color:darkred'> \\1 </div>", $sql);
$sql = preg_replace('/;/i', "<b><div style='color: green;'> ;</div></b>", $sql);
$sql = preg_replace('/[0-9]{6}/i', "<div style='color: red;'> \\1 </div>", $sql);Code: Select all
$sql = str_replace('/=/', "<span style='color: green'>=</span>", $sql);- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
I tested your code. The equals sign is the only thing that doesn't work.
You have two errors in your regex though.
This:
Should be this:
(Remove the periods at the start of the regex)
And please, use inline elements. Span works fine. And on the spot <b> and <div style="">, you could condense it to simply <b style="">.
You have two errors in your regex though.
This:
Code: Select all
$sql = preg_replace('/.(SELECT|UPDATE)\s+/i', "<div style='color:blue'>\\1 </div>", $sql);
$sql = preg_replace('/.(MAX|AVG|SUM|COUNT|MIN|FROM|INTO)\s+/i', "<div style='color:green'> \\1 </div>", $sql);Code: Select all
$sql = preg_replace('/(SELECT|UPDATE)\s+/i', "<div style='color:blue'>\\1 </div>", $sql);
$sql = preg_replace('/(MAX|AVG|SUM|COUNT|MIN|FROM|INTO)\s+/i', "<div style='color:green'> \\1 </div>", $sql);And please, use inline elements. Span works fine. And on the spot <b> and <div style="">, you could condense it to simply <b style="">.
k, i did what you said. here's my code now
so how should i get the equal sign to work?
Code: Select all
$sql = str_replace("\n", '<br />', $sql);
$sql = preg_replace("/'(.+?)'/i", "<div style='color:red'> '\\1' </div>", $sql);
$sql = preg_replace('/"(.+?)"/i', "<div style='color:red'> \"\\1\" </div>", $sql);
$sql = preg_replace('/`(.+?)`/i', "<div style='color:red'> `\\1` </div>", $sql);
$sql = str_replace('/=/', "<span style='color: green'>=</span>", $sql);
// $sql = preg_replace("/(*)/", "<div style='color:brown'> \\1 </div>", $sql);
$sql = preg_replace('/^(CREATE|ALTER|DROP)\s+(VIEW|TABLE|DATABASE|SCHEMA)\s+/i', "<div style='color:blue'>$1 $2 </div>", $sql);
$sql = preg_replace('/(SELECT|UPDATE)\s+/i', "<div style='color:blue'>\\1 </div>", $sql);
$sql = preg_replace('/(MAX|AVG|SUM|COUNT|MIN|FROM|INTO)\s+/i', "<div style='color:green'> \\1 </div>", $sql);
$sql = preg_replace('/(ASC|DESC|ORDER BY|LIMIT|LEFT|JOIN|WHERE|MODIFY|CHANGE|DISTINCT)/i', "<div style='color:green'> \\1 </div>", $sql);
$sql = preg_replace('/(LIKE|NOT LIKE|REGEXP)/i', "<div style='color:orange'> \\1 </div>", $sql);
$sql = preg_replace('/(INT|VARCHAR|TINYINT|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|CHAR|CHARACTER'.
'|DATE|DATETIME|DEC|DECIMAL|DOUBLE|ENUM|FLOAT|FLOAT4|FLOAT8|INT1|INT2|INT3|INT4|INT8|INTEGER|'.
'LONGBLOB|LONGTEXT|MEDIUMBLOB|MEDIUMTEXT|MEDIUMINT|MIDDLEINT|NCHAR|NUMERIC|REAL|SERIAL|SET|'.
'SMALLINT|TEXT|TIME|TIMESTAMP|TINYBLOB|TINYTEXT|VARBINARY|YEAR|PRIMARY|AUTO INCREMENT)/i', "<div style='color:darkred'> \\1 </div>", $sql);
$sql = preg_replace('/;/i', "<b style='color: green;'> ;</b>", $sql);
$sql = preg_replace('/[0-9]{6}/i', "<div style='color: red;'> \\1 </div>", $sql);- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
- John Cartwright
- Site Admin
- Posts: 11470
- Joined: Tue Dec 23, 2003 2:10 am
- Location: Toronto
- Contact: