문자열에서 과도한 들여 쓰기를 제거하려고합니다.이 경우에는 SQL이므로 로그 파일에 넣을 수 있습니다. 그래서 가장 작은 양의 들여 쓰기 (일명 탭)를 찾아서 각 줄의 앞면에서 제거해야하지만 다음 코드는 똑같은 아이디어를 출력합니다. 즉문자열에서 과도한 들여 쓰기를 지능적으로 제거합니다.
, 나는 다음과 같은 먹고 싶어 (참고 : StackOverflow의 편집기 탭 4 개 공간을 시뮬레이션, 코드에서, 공간 내 탭 변환을하지만, 정말 \ T는 문자)
SELECT
blah
FROM
table
WHERE
id=1
및
SELECT
blah
FROM
table
WHERE
id=1
로 변환 여기에 내가 노력 코드이고 것 같다
$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>';
귀하의 SQL 문자열은 그것의 앞에 공간을 가지고 있으며, 대신 탭을 계산한다. – Nate
@ 네이트는 실제로 내 붙여 넣기를 탭에서 공백으로 변환했지만 실제로 코드의 탭입니다. – TravisO
들여 쓰기를 시작하기 전에 각 줄의 시작 부분에있는 모든 입력란을 탭으로 변환해야합니다. – MoreThanChaos