読みやすくするためにSQLステートメントをフォーマットしようとしています。
$sql = "SELECT title, url, author, FROM_UNIXTIME(published, '%Y') AS year FROM articles WHERE id IN(2010,2011,2012)";
期待される結果:
SELECT
title,
url,
author,
FROM_UNIXTIME(published, '%Y') AS year
FROM
articles
WHERE
id IN(2010, 2011, 2012)
SELECT、FROM、WHERE... などのキーワードを独自の行に作成
し、各コンマの後に改行 + タブを挿入しますが、括弧内のコンマは挿入しません。
ここに私の試みがあります
$sql = preg_replace('/(SELECT|FROM[^_]|WHERE)/', "\n$1\n\t", $sql);
function replace_commas($matches) {
return str_replace(",", ",\n\t", $matches[0]);
}
$sql = preg_replace_callback("/(.*)/s", 'replace_commas', $sql);
// ^^^^^^^
// stuck here
ここで立ち往生: パターン内の括弧内のコンマを除外する方法は?