2012-03-02 41 views
0

正如我在標題 說我學習如何在PHPPHP正則表達式:瞭解如何格式化像(語法highligher的jQuery插件)MySQL查詢

這裏使用正則表達式進行語法高亮顯示MySQL的代碼是我的代碼我只是試圖做

$css = '<style> body{font-family:tahoma;font-size:12px;}</style>'; 
$lista = 'select|insert|update|delete|drop|truncate|alter' ; 
$lista2 = 'into|from|values|desc|asc|on' ; 
$lista3 = 'where|order by|limit|having|group by|union|left join|right join|full join|outer join|inner join' ; 
$code = preg_replace('/('.$lista.')/i','<br /><span style="color:#f00;">$1</span>',$this->query); 
$code = preg_replace('/('.$lista3.')/i','<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0f0">$1</span>',$code); 
$code = preg_replace('/('.$lista2.')/i','<span style="color:#00f">$1</span>',$code).$css; 

我的結果是這樣的IMG

syntax result here

我想用簡單的方法來爲此

,但我不應該使用任何插件,只是正則表達式來理解它太

+2

解析器不錯,正則表達式不好。 – 2012-03-02 22:11:37

+0

@比利月亮,非常感謝你,你能告訴我如何和爲什麼? - >學習:) – 2012-03-02 22:23:17

+0

有關堆棧溢出的問題有很多,但是這個問題似乎碰到了一個問題:http://stackoverflow.com/questions/5389244/building-a-regex-based-parser – 2012-03-03 08:37:31

回答

0

我與比利月亮同意關於解析器,但如果你真的想使用正則表達式,你是近距離工作,你」剛剛被遺忘的字邊界

$code = preg_replace('/\b('.$lista.')\b/i','...',$this->query); 
$code = preg_replace('/\b('.$lista3.')\b/i','...',$code); 
$code = preg_replace('/\b('.$lista2.')\b/i','...', $code);