Ben SQL bulunuyor bu durumda, bir dizeden bazı aşırı girinti kaldırmak için çalışıyorum, bu yüzden bir günlük dosyası içine konabilir. Yani herhangi bir fikir, ben (sekmeler aka) girinti küçük miktarını bulmak ve her satırın önüne çıkarmak gerekir, ancak aşağıdaki kod tam olarak aynı yazdırarak biter?
Diğer bir deyişle, ben aşağıdaki almak istiyorum (NOT: StackOverflow editörü sekmesi 4 boşluk taklit, kodu, boşluk benim sekmeleri dönüştürülür, ama gerçekten bir \ t karakter)
SELECT
blah
FROM
table
WHERE
id=1
ve dönüştürmek
SELECT
blah
FROM
table
WHERE
id=1
Burada denedim kod ve başarısız
$sql = '
SELECT
blah
FROM
table
WHERE
id=1
';
// it's most likely idented SQL, remove any idention
$lines = explode("\n", $sql);
$space_count = array();
foreach ( $lines as $line )
{
preg_match('/^(\t+)/', $line, $matches);
$space_count[] = strlen($matches[0]);
}
$min_tab_count = min($space_count);
$place = 0;
foreach ( $lines as $line )
{
$lines[$place] = preg_replace('/^\t{'. $min_tab_count .'}/', '', $line);
$place++;
}
$sql = implode("\n", $lines);
print '<pre>'. $sql .'</pre>';