4
我想格式化一個sql語句,使其更容易閱讀。PHP preg_replace所有逗號除括號內的那些逗號
$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)
它只是讓喜歡選擇那些關鍵字,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
困在這裏:如何排除裏面的格局括號內的逗號?
我確實有一些多層圓括號,但現在您的模式並不會影響它們太多。它的效果很好。謝謝。 – user1643156