사이트 내 전체검색
PHP
[php] HTML 태그 정렬 하는 소스
로빈아빠
https://cmd.kr/php/518 URL이 복사되었습니다.

본문

HTML 태그 정렬 하는 소스
 
<? 
##### 기본 변수를 설정한다. ##### 
// 모든 입력값은 현재 파일이 존재하는 디렉토리를 기준을 입력한다. 

$source_directory_name = ""; // 원본 파일의 디렉토리 명을 기입한다. 
$source_file_name = "source.html"; // 원본 파일 명을 기입한다. 

$target_diretory_name = ""; // 변환 후 저장될 디렉토리 명을 기입한다. 
$target_file_name = "target.html"; // 변환 후 생성될 파일의 명을 기록한다. 

$code_enter = "\r\n"; // 엔터코드 값을 입력한다. 
$code_enter2 = "\r\n\r\n"; // 엔터코드 2줄 값. 
$code_tab = "\t"; // 탭코드 값을 입력한다. 

$upper_char = true; // 대문자로 변환 (true | false) 


##### 파일을 배열변수(줄단위) 형태로 가져온다. ##### 
if($source_diretory_name) {$source_file = $source_diretory_name . "/" . $source_file_name;} 
else {$source_file = $source_file_name;} 
$source = file($source_file); 
$source_counter = sizeof($source); 

$table_depth = 0; // 테이블 깊이를 초기화 한다. 
$table_counter = 0; // 테이블 카운터를 초기화 한다. 


##### 처리부분 ##### 
for($i = 0; $i < $source_counter; $i++) { 

       $now_record = trim($source[$i]); // 각줄의 앞뒤 공백을 제거한다. 

       if($now_record) { // 공백줄이 아니라면 타겟 배열변수에 입력한다. 

              if(eregi("(<table)", $now_record)) { 
                     $table_depth++; 
                     $table_counter++; 
              } 

              ##### <td><table> 형태와 </table></td> 형태의 뭉쳐진 테이블 태그를 분리한다. ##### 
              $now_record = eregi_replace("(><table)", ">$code_enter<table", $now_record); 
              $now_record = eregi_replace("(</table><)", "</table>$code_enter<", $now_record); 

              ##### 기존 태그를 다른 형태의 같은 효과 태그로 변환 한다. ##### 
              $now_record = eregi_replace("(<strong>)", "<b>", $now_record); 
              $now_record = eregi_replace("(</strong>)", "</b>", $now_record); 

              ##### 기본 태그를 정렬한다. ##### 
              $now_record = eregi_replace("(<script|<style)", $code_enter2 . "\\1", $now_record); 
              $now_record = eregi_replace("(</script>|</style>)", "\\1" . $code_enter2, $now_record); 

              $now_record = eregi_replace("(<table|<form|<body)", $code_enter . "\\1", $now_record); 
              $now_record = eregi_replace("(</table>|</form>|</body>)", "\\1" . $code_enter, $now_record);               

              ##### 주석문을 추가한다. ##### 
              $now_record = eregi_replace("(<table)", "<!-- 테이블 No. $table_counter [시작] Depth : $table_depth -->$code_enter\\1", $now_record); 
              $now_record = eregi_replace("(</table>)", "\\1$code_enter<!-- 테이블 No. $table_counter [끝] Depth : $table_depth -->", $now_record); 
              $now_record = eregi_replace("(<script)", "<!-- 스크립트 [시작] -->$code_enter\\1", $now_record); 
              $now_record = eregi_replace("(</script>)", "\\1$code_enter<!-- 스크립트 [끝] -->", $now_record); 
              $now_record = eregi_replace("(<style)", "<!-- 스타일 [시작] -->$code_enter\\1", $now_record); 
              $now_record = eregi_replace("(</style>)", "\\1$code_enter<!-- 스타일 [끝] -->", $now_record); 
              $now_record = eregi_replace("(<form)", "<!-- 입력폼 [시작] -->$code_enter\\1", $now_record); 
              $now_record = eregi_replace("(</form>)", "\\1$code_enter<!-- 입력폼 [끝] -->", $now_record); 
              $now_record = eregi_replace("(<input|<textarea)", "<!-- 입력 -->\\1", $now_record); 

              $target[] = $now_record; 

              if(eregi("(</table>)", $now_record)) {$table_depth--;} 

       } 
       
} 


##### 정리된 태그들을 하나의 변수로 저장한뒤, 엔터코드 값으로 분리해준다. ##### // 중간 중간 삽입된 엔터코드를 분리하기 위해서임. 
$source_implode = implode($code_enter, $target); 
$source = explode($code_enter, $source_implode); 

unset($target); // 타켓 변수를 제거한다. 

$source_counter = sizeof($source); 
$tab_counter = 0; // 탭 카운트를 초기화 한다. 

for($i = 0; $i < $source_counter; $i++) { 

       $now_record = trim($source[$i]); // 각줄의 앞뒤 공백을 제거한다. 

       if($now_record) { 

              ##### 탭 간격을 설정한다. ##### // 테이블 태그와  스크립트 태그를 포함하면 탭을 증가한다. 
              if(eregi("(<style)", $now_record)) {$tab_counter += 2;}               
              if(eregi("(<table|<script)", $now_record)) {$tab_counter++;} 
               
              ##### 탭의 수만큼 줄 앞에 탭을 추가한다. ##### 
              for($j = 1; $j < $tab_counter; $j++) {$now_record = $code_tab . $now_record;} 

              $target[] = $now_record; 
               
              if(eregi("(</style>)", $now_record)) {$tab_counter -= 2;} 
              if(eregi("(</table>|</script>)", $now_record)) {$tab_counter--;} 

       } else {$target[] = "";}       

} 

$target_implode = implode($code_enter, $target); // 배열에서 일반 변수로 모아준다. 


##### 대문자 변환처리를 한다. ##### 
if($upper_char) { 

       $target_implode = eregi_replace("(<script)", "<SCRIPT", $target_implode); 
       $target_implode = eregi_replace("(</script>)", "</SCRIPT>", $target_implode); 
       $target_implode = eregi_replace("(<style)", "<STYLE", $target_implode); 
       $target_implode = eregi_replace("(</style>)", "</STYLE>", $target_implode); 

       $target_implode = eregi_replace("(<body)", "<BODY", $target_implode); 
       $target_implode = eregi_replace("(</body>)", "</BODY>", $target_implode); 
       $target_implode = eregi_replace("(<table)", "<TABLE", $target_implode); 
       $target_implode = eregi_replace("(</table>)", "</TABLE>", $target_implode);       
       $target_implode = eregi_replace("(<form)", "<FORM", $target_implode); 
       $target_implode = eregi_replace("(</form>)", "</FORM>", $target_implode); 

       $target_implode = eregi_replace("(<tr)", "<TR", $target_implode); 
       $target_implode = eregi_replace("(</tr>)", "</TR>", $target_implode); 
       $target_implode = eregi_replace("(<td)", "<TD", $target_implode); 
       $target_implode = eregi_replace("(</td>)", "</TD>", $target_implode); 
       
       $target_implode = eregi_replace("(<input)", "<INPUT", $target_implode); 
       $target_implode = eregi_replace("(<textarea)", "<TEXTAREA", $target_implode); 
       $target_implode = eregi_replace("(</textarea>)", "</TEXTAREA>", $target_implode); 
       $target_implode = eregi_replace("(<select)", "<SELECT", $target_implode); 
       $target_implode = eregi_replace("(</select>)", "</SELECT>", $target_implode); 

} 


##### 파일의 저장위치를 결정한다. ##### 
if($target_diretory_name) {$target_file = $target_diretory_name . "/" . $target_file_name;} 
else {$target_file = $target_file_name;} 


##### 완성된 내용을 파일로 저장한다. ##### 
$write_file = fopen($target_file, w); // 파일을 저장 형태로 열어준다. 

if(!fwrite($write_file, $target_implode)) { 
       echo "변환된 완성 파일 저장에 실패했습니다."; 
       exit; 
}; 
fclose($write_file); 

echo "변환에 성공하여, $target_file 에 저장되었습니다."; 
exit; 
?> 

댓글목록

등록된 댓글이 없습니다.

PHP
871 (9/18P)

Search

Copyright © Cmd 명령어 18.188.13.127