jdorn/sql-formatter 是一個輕量級的 PHP 類用於格式化 SQL 語句。
它支援自動進行縮排、新增換行,甚至還支援語法高亮。
在命令列內使用
該擴充套件包包含一個 bin/sql-formatter 可執行檔案,可直接用於命令列格式化 SQL。
使用 Composer 全域性安裝後便可使用該命令了:
composer global require jdorn/sql-formatter sql-formatter "SELECT SOME QUERY;" // 直接格式化 // 或 echo "SELECT SOME QUERY;" | sql-formatter // 使用管道,更適合較大量的 SQL 語句
作為擴充套件包使用
SqlFormatter 類包含一個名為 format 的靜態方法,它可以接收一個 SQL 語句字串作為引數,並返回格式化後使用 pre 標籤包裹的 HTML 程式碼。
例如:
<?php require_once('SqlFormatter.php'); $query = "SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1` WHERE Column1 = 'testing' AND ( (`Column2` = `Column3` OR Column4 >= NOW()) ) GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10"; echo SqlFormatter::format($query);
輸出:
只格式化不高亮
若是不需要高亮,只需要新增縮排和換行,請將第二個引數設定為 false 即可。
適用於輸出錯誤紀錄檔或者其它非 HTML 資料時。
<?php echo SqlFormatter::format($query, false);
輸出:
只高亮不格式化
有個單獨的方法名為 highlight 能夠保證原有的格式不被改動,只新增語法高亮。
適用於 SQL 已經被良好格式化,需讓它更加易讀時。
壓縮查詢語句
compress 方法可刪除所有的 SQL 注釋,並壓縮不必要的空格。
適用於輸出多條查詢語句,並使其易於複製貼上到命令列時。
-- This is a comment SELECT /* This is another comment On more than one line */ Id #This is one final comment as temp, DateCreated as Created FROM MyTable; echo SqlFormatter::compress($query);
輸出:
SELECT Id as temp, DateCreated as Created FROM MyTable;
刪除註釋
如果你需要保留原有格式,但仍需刪除 SQL 注釋,你可以使用 removeComments 方法來代替 compress。
-- This is a comment SELECT /* This is another comment On more than one line */ Id #This is one final comment as temp, DateCreated as Created FROM MyTable; echo SqlFormatter::removeComments($query);
輸出:
SELECT Id as temp, DateCreated as Created FROM MyTable;
將多條 SQL 語句分割為陣列
還有一個與格式化無關的特性,能夠將多條 SQL 語句分離為陣列。
例如:
DROP TABLE IF EXISTS MyTable; CREATE TABLE MyTable ( id int ); INSERT INTO MyTable (id) VALUES (1),(2),(3),(4); SELECT * FROM MyTable; $queries = SqlFormatter::splitQuery($sql);
結果:
DROP TABLE IF EXISTS MyTable; CREATE TABLE MyTable ( id int ); INSERT INTO MyTable (id) VALUES (1),(2),(3),(4); SELECT * FROM MyTable;
為何不使用正規表示式?
去看看 README 吧~https://github.com/jdorn/sql-formatter#why...。
以上就是在 PHP 中格式化並高亮 SQL 語句的詳細內容,更多請關注TW511.COM其它相關文章!