텍스트 내부 탭을 바꾸자.
Posted On 2008/07/08 14:24, Filed Under WEB/ExtJS
PHP 파일이나 JS 파일이나 코딩할때 레이아웃을 Tab 문자로 맞추는 편인데,
이걸 그대로 웹에 올리면 들여쓰기가 엉망이 되어버린다.
4칸으로 지정해서 쓰는 에디터랑 다르게 8칸으로 출력이 되거나 다른 문자로 치환되어 출력되니,
영 맘에 들지 않게 되는데,
그때 쓰기 위한 탭 하나를 4칸의 스페이스로 바꾸는 페이지.
http://monorain.net/project/CleanCode/
아래는 탭 제거용 함수 - tab_remove( $string )
탭을 칸에 맞게 스페이스로 변환하며,
앞부분 탭을 삭제한다.
function tab_remove( $string ) {
$aLineData = array();
$aLineList = explode( "\n", rtrim( $string ));
$iLineCount = count( $aLineList );
for ( $iLoop = 0; $iLoop < $iLineCount; $iLoop++ ) {
$sLine = $aLineList[$iLoop];
if (strlen($sLine) > 0) {
$iStart = 0;
$bLoopBreak = true;
while ( $bLoopBreak == true ) {
$iStart = strpos( $sLine, "\t" );
if ($iStart === false) {
$bLoopBreak = false;
} else {
$sSpace = str_repeat( ' ', ( 4 - ( $iStart % 4 )));
$sLine = substr_replace( $sLine, $sSpace , $iStart, 1 );
}
}
$sLTrimLine = preg_replace( "/^\s+/", '', $sLine);
$iLTrimPos = strlen( $sLine ) - strlen( $sLTrimLine );
if (( isset( $iEndOfSpace ) === false ) || ( $iLTrimPos < $iEndOfSpace )) {
$iEndOfSpace = $iLTrimPos;
}
array_push( $aLineData, $sLine );
}
}
$iLineCount = count( $aLineData );
if ( $iEndOfSpace > 0 ) {
for ( $iLoop = 0; $iLoop < $iLineCount; $iLoop++ ) {
$aLineData[$iLoop] = substr( $aLineData[$iLoop], $iEndOfSpace );
}
}
$sReturnData = implode( "\n", $aLineData );
return $sReturnData;
}