在 PHP 中格式化并高亮 SQL 语句-php教程

资源魔 39 0

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);

输入:

82ab28c3a60a5d18d9171619bd31c2d.png

只格局化没有高亮

若是没有需求高亮,只要要增加缩进以及换行,请将第二个参数设置为 false 便可。

实用于输入谬误日记或许其它非 HTML 数据时。

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

输入:

307f90c5eec48476d888b9d86b8884c.png

只高亮没有格局化

有个独自的办法名为 highlight 可以保障原本的格局没有被改动,只增加语法高亮。

实用于 SQL 曾经被精良格局化,需让它愈加易读时。

bd2f5222a86af107ad9540527466a7a.png

紧缩查问语句

compress 办法可删除了一切的 SQL 正文,并紧缩不用要的空格。

实用于输入多条查问语句,并使其易于复制粘贴到饬令行时。

-- This is a co妹妹ent
    SELECT
    /* This is another co妹妹ent
    On more than one line */
    Id #This is one final co妹妹ent
    as temp, DateCreated as Created FROM MyTable;
echo SqlFormatter::compress($query);

输入:

SELECT Id as temp, DateCreated as Created FROM MyTable;

删除了正文

假如你需求保存原有格局,但仍需删除了 SQL 正文,你能够应用 removeCo妹妹ents 办法来替代 compress。

-- This is a co妹妹ent
    SELECT
    /* This is another co妹妹ent
    On more than one line */
    Id #This is one final co妹妹ent
    as temp, DateCreated as Created FROM MyTable;
echo SqlFormatter::removeCo妹妹ents($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 sql php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!