То, что я ищу, является функцией php, которая берет неотформатированный вопрос как это:
$sql = «выбирают имя, размер от вещей где цвет = 'зеленый' заказ ценой asc»;
так, чтобы это появилось бы на странице HTML что-то вроде этого:
SELECT name, size FROM things WHERE color = 'green' ORDER BY price ASC';
Есть некоторый кодекс внутри phpMyAdmin, который уже делает это, я мог посмотреть там, я предполагаю!
Использование PHPMYADMIN довольно прямо вперед:
require 'libraries/common.inc.php';
$sql= "select * from test";
$parsed_sql = PMA_SQP_parse($sql);
echo PMA_SQP_formatHtml($parsed_sql);
Добавьте таблицу стилей для включения синтаксиса выделения. Если вы читаете немного в документации SQLParser Documentation , вы найдете некоторую другую функцию для различных типов форматирования.
Только то, что phpmyadmin несколько большим, чтобы использовать только разбор SQL, поэтому вы можете захотеть разбить все остальные функции ...
Я не думаю, что есть какой-либо свободно доступный код, который делает это в PECL или аналогично - это жаль, так как было бы довольно мало утилите. (Хотя и только с довольно ограниченным использованием.)
Как таковой, вы ответили вам собственный вопрос - phpmyadmin, вероятно, хороший первый порт вызова.
Что-то вроде этого будет работать - добавьте любые другие ключевые слова SQL, которые вы хотите разобраться:
function sql_format($query) {
$keywords = array("select", "from", "where", "order by", "group by", "insert into", "update");
foreach ($keywords as $keyword) {
if (preg_match("/($keyword *)/i", $query, $matches)) {
$query = str_replace($matches[1], "\n" . strtoupper($matches[1]) . "\n ", $query);
}
}
return $query;
}