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 | ##### 파일을 배열변수(줄단위) 형태로 가져온다. ##### |
019 | if ( $source_diretory_name ) { $source_file = $source_diretory_name . "/" . $source_file_name ;} |
020 | else { $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 | ##### 처리부분 ##### |
029 | for ( $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 |
079 | unset( $target ); // 타켓 변수를 제거한다. |
080 |
081 | $source_counter = sizeof( $source ); |
082 | $tab_counter = 0; // 탭 카운트를 초기화 한다. |
083 |
084 | for ( $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 | ##### 대문자 변환처리를 한다. ##### |
110 | if ( $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 | ##### 파일의 저장위치를 결정한다. ##### |
139 | if ( $target_diretory_name ) { $target_file = $target_diretory_name . "/" . $target_file_name ;} |
140 | else { $target_file = $target_file_name ;} |
141 |
142 |
143 | ##### 완성된 내용을 파일로 저장한다. ##### |
144 | $write_file = fopen ( $target_file , w); // 파일을 저장 형태로 열어준다. |
145 |
146 | if (!fwrite( $write_file , $target_implode )) { |
147 | echo "변환된 완성 파일 저장에 실패했습니다." ; |
148 | exit ; |
149 | }; |
150 | fclose( $write_file ); |
151 |
152 | echo "변환에 성공하여, $target_file 에 저장되었습니다." ; |
153 | exit ; |
154 | ?> |
|
댓글목록
등록된 댓글이 없습니다.