YesYo.com MintState Forums
뒤로    Go3.co.kr MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

HTML 태그 정렬 하는 소스

페이지 정보

작성자 MintState 댓글 0건 조회 12,818회 작성일 08-11-10 13:19

본문

HTML 태그 정렬 하는 소스
 
001<?
002##### 기본 변수를 설정한다. #####
003// 모든 입력값은 현재 파일이 존재하는 디렉토리를 기준을 입력한다.
004 
005$source_directory_name = ""; // 원본 파일의 디렉토리 명을 기입한다.
006$source_file_name = "source.html"; // 원본 파일 명을 기입한다.
007 
008$target_diretory_name = ""; // 변환 후 저장될 디렉토리 명을 기입한다.
009$target_file_name = "target.html"; // 변환 후 생성될 파일의 명을 기록한다.
010 
011$code_enter = "\r\n"; // 엔터코드 값을 입력한다.
012$code_enter2 = "\r\n\r\n"; // 엔터코드 2줄 값.
013$code_tab = "\t"; // 탭코드 값을 입력한다.
014 
015$upper_char = true; // 대문자로 변환 (true | false)
016 
017 
018##### 파일을 배열변수(줄단위) 형태로 가져온다. #####
019if($source_diretory_name) {$source_file = $source_diretory_name . "/" . $source_file_name;}
020else {$source_file = $source_file_name;}
021$source = file($source_file);
022$source_counter = sizeof($source);
023 
024$table_depth = 0; // 테이블 깊이를 초기화 한다.
025$table_counter = 0; // 테이블 카운터를 초기화 한다.
026 
027 
028##### 처리부분 #####
029for($i = 0; $i < $source_counter; $i++) {
030 
031       $now_record = trim($source[$i]); // 각줄의 앞뒤 공백을 제거한다.
032 
033       if($now_record) { // 공백줄이 아니라면 타겟 배열변수에 입력한다.
034 
035              if(eregi("(<table)", $now_record)) {
036                     $table_depth++;
037                     $table_counter++;
038              }
039 
040              ##### <td><table> 형태와 </table></td> 형태의 뭉쳐진 테이블 태그를 분리한다. #####
041              $now_record = eregi_replace("(><table)", ">$code_enter<table", $now_record);
042              $now_record = eregi_replace("(</table><)", "</table>$code_enter<", $now_record);
043 
044              ##### 기존 태그를 다른 형태의 같은 효과 태그로 변환 한다. #####
045              $now_record = eregi_replace("(<strong>)", "<b>", $now_record);
046              $now_record = eregi_replace("(</strong>)", "</b>", $now_record);
047 
048              ##### 기본 태그를 정렬한다. #####
049              $now_record = eregi_replace("(<script|<style)", $code_enter2 . "\\1", $now_record);
050              $now_record = eregi_replace("(</script>|</style>)", "\\1" . $code_enter2, $now_record);
051 
052              $now_record = eregi_replace("(<table|<form|<body)", $code_enter . "\\1", $now_record);
053              $now_record = eregi_replace("(</table>|</form>|</body>)", "\\1" . $code_enter, $now_record);              
054 
055              ##### 주석문을 추가한다. #####
056              $now_record = eregi_replace("(<table)", "<!-- 테이블 No. $table_counter [시작] Depth : $table_depth -->$code_enter\\1", $now_record);
057              $now_record = eregi_replace("(</table>)", "\\1$code_enter<!-- 테이블 No. $table_counter [끝] Depth : $table_depth -->", $now_record);
058              $now_record = eregi_replace("(<script)", "<!-- 스크립트 [시작] -->$code_enter\\1", $now_record);
059              $now_record = eregi_replace("(</script>)", "\\1$code_enter<!-- 스크립트 [끝] -->", $now_record);
060              $now_record = eregi_replace("(<style)", "<!-- 스타일 [시작] -->$code_enter\\1", $now_record);
061              $now_record = eregi_replace("(</style>)", "\\1$code_enter<!-- 스타일 [끝] -->", $now_record);
062              $now_record = eregi_replace("(<form)", "<!-- 입력폼 [시작] -->$code_enter\\1", $now_record);
063              $now_record = eregi_replace("(</form>)", "\\1$code_enter<!-- 입력폼 [끝] -->", $now_record);
064              $now_record = eregi_replace("(<input|<textarea)", "<!-- 입력 -->\\1", $now_record);
065 
066              $target[] = $now_record;
067 
068              if(eregi("(</table>)", $now_record)) {$table_depth--;}
069 
070       }
071        
072}
073 
074 
075##### 정리된 태그들을 하나의 변수로 저장한뒤, 엔터코드 값으로 분리해준다. ##### // 중간 중간 삽입된 엔터코드를 분리하기 위해서임.
076$source_implode = implode($code_enter, $target);
077$source = explode($code_enter, $source_implode);
078 
079unset($target); // 타켓 변수를 제거한다.
080 
081$source_counter = sizeof($source);
082$tab_counter = 0; // 탭 카운트를 초기화 한다.
083 
084for($i = 0; $i < $source_counter; $i++) {
085 
086       $now_record = trim($source[$i]); // 각줄의 앞뒤 공백을 제거한다.
087 
088       if($now_record) {
089 
090              ##### 탭 간격을 설정한다. ##### // 테이블 태그와  스크립트 태그를 포함하면 탭을 증가한다.
091              if(eregi("(<style)", $now_record)) {$tab_counter += 2;}              
092              if(eregi("(<table|<script)", $now_record)) {$tab_counter++;}
093                
094              ##### 탭의 수만큼 줄 앞에 탭을 추가한다. #####
095              for($j = 1; $j < $tab_counter; $j++) {$now_record = $code_tab . $now_record;}
096 
097              $target[] = $now_record;
098                
099              if(eregi("(</style>)", $now_record)) {$tab_counter -= 2;}
100              if(eregi("(</table>|</script>)", $now_record)) {$tab_counter--;}
101 
102       } else {$target[] = "";}      
103 
104}
105 
106$target_implode = implode($code_enter, $target); // 배열에서 일반 변수로 모아준다.
107 
108 
109##### 대문자 변환처리를 한다. #####
110if($upper_char) {
111 
112       $target_implode = eregi_replace("(<script)", "<SCRIPT", $target_implode);
113       $target_implode = eregi_replace("(</script>)", "</SCRIPT>", $target_implode);
114       $target_implode = eregi_replace("(<style)", "<STYLE", $target_implode);
115       $target_implode = eregi_replace("(</style>)", "</STYLE>", $target_implode);
116 
117       $target_implode = eregi_replace("(<body)", "<BODY", $target_implode);
118       $target_implode = eregi_replace("(</body>)", "</BODY>", $target_implode);
119       $target_implode = eregi_replace("(<table)", "<TABLE", $target_implode);
120       $target_implode = eregi_replace("(</table>)", "</TABLE>", $target_implode);      
121       $target_implode = eregi_replace("(<form)", "<FORM", $target_implode);
122       $target_implode = eregi_replace("(</form>)", "</FORM>", $target_implode);
123 
124       $target_implode = eregi_replace("(<tr)", "<TR", $target_implode);
125       $target_implode = eregi_replace("(</tr>)", "</TR>", $target_implode);
126       $target_implode = eregi_replace("(<td)", "<TD", $target_implode);
127       $target_implode = eregi_replace("(</td>)", "</TD>", $target_implode);
128        
129       $target_implode = eregi_replace("(<input)", "<INPUT", $target_implode);
130       $target_implode = eregi_replace("(<textarea)", "<TEXTAREA", $target_implode);
131       $target_implode = eregi_replace("(</textarea>)", "</TEXTAREA>", $target_implode);
132       $target_implode = eregi_replace("(<select)", "<SELECT", $target_implode);
133       $target_implode = eregi_replace("(</select>)", "</SELECT>", $target_implode);
134 
135}
136 
137 
138##### 파일의 저장위치를 결정한다. #####
139if($target_diretory_name) {$target_file = $target_diretory_name . "/" . $target_file_name;}
140else {$target_file = $target_file_name;}
141 
142 
143##### 완성된 내용을 파일로 저장한다. #####
144$write_file = fopen($target_file, w); // 파일을 저장 형태로 열어준다.
145 
146if(!fwrite($write_file, $target_implode)) {
147       echo "변환된 완성 파일 저장에 실패했습니다.";
148       exit;
149};
150fclose($write_file);
151 
152echo "변환에 성공하여, $target_file 에 저장되었습니다.";
153exit;
154?>

댓글목록

등록된 댓글이 없습니다.

Total 165건 3 페이지
PHP 목록
번호 제목 글쓴이 조회 날짜
115 MintState 14820 11-10
114 MintState 16476 11-10
113 MintState 17416 11-10
112 MintState 21554 11-10
111 MintState 12765 11-10
110 MintState 30988 11-10
109 MintState 16206 11-10
108 MintState 14945 11-10
107 MintState 14855 11-10
106 MintState 12886 11-10
105 MintState 21105 11-10
104 MintState 13258 11-10
103 MintState 13108 11-10
102 MintState 20349 11-10
101 MintState 11759 11-10
열람중 MintState 12819 11-10
99 MintState 20834 11-10
98 MintState 14586 11-10
97 MintState 13191 11-10
96 MintState 11714 11-10
95 MintState 13633 11-10
94 MintState 12180 11-03
93 MintState 11645 11-03
92 MintState 12826 11-03
91 MintState 15837 11-03
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2025, Go3.co.kr MintState. ™