首頁  >  文章  >  後端開發  >  在 PHP 中格式化並高亮 SQL 語句

在 PHP 中格式化並高亮 SQL 語句

藏色散人
藏色散人轉載
2019-09-07 11:13:093207瀏覽

在 PHP 中格式化並高亮 SQL 語句

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(&#39;SqlFormatter.php&#39;);
$query = "SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`
    WHERE Column1 = &#39;testing&#39; AND ( (`Column2` = `Column3` OR Column4 >= NOW()) )
    GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10";
echo SqlFormatter::format($query);

輸出:

在 PHP 中格式化並高亮 SQL 語句

#只格式化不高亮

#若是不需要高亮,只需要新增縮排和換行,請將第二個參數設為false 即可。

適用於輸出錯誤日誌或其它非 HTML 資料時。

<?php
echo SqlFormatter::format($query, false);

輸出:

在 PHP 中格式化並高亮 SQL 語句

只高亮不格式化

有個單獨的方法名為highlight能確保原有的格式不被改動,只加入文法高亮。

適用於 SQL 已經被很好地格式化,需讓它更易讀時。

在 PHP 中格式化並高亮 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 語句的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除