[php] 간단한 형식으로, 파일에서 array로 간편하게 옮기기.
글쓴이: lacovnk / 작성시간: 일, 2005/05/29 - 3:57오후
간단한 정보들을 파일에 저장하기 위해서 짜봤습니다;
#oneEntry index1 index2 data1 data2 ##wrongOneEntry index1 index2 data1 data2 ##listEntry index index1 index2 0 data1 data2 1 data1 data2
oneEntry와 lisdtEntry의 차이는, 여러개가 있느냐, 하나가 있느냐 입니다. 하나만 있을 것이라면 굳이 result[wrongEntry][0]으로 접근 할 필요가 없게 만들려고.. 구분하였습니다;
위 의 파일을 받아, print_r로 찍으면 다음과 같습니다.
Array ( [oneEntry] => Array ( [index1] => data1 [index2] => data2 ) [wrongOneEntry] => Array ( [0] => Array ( [index1] => data1 [index2] => data2 ) ) [listEntry] => Array ( [0] => Array ( [index] => 0 [index1] => data1 [index2] => data2 ) [1] => Array ( [index] => 1 [index1] => data1 [index2] => data2 ) ) )
code
function getInfoFile($fileName) { $bufFile = file($fileName); $key = array(); $result = array(); foreach($bufFile as $cur) { $bufLine = explode("\t",$cur); if($bufLine[0][0] == '#') { $count = 0; for($i=1;$i<sizeof($bufLine);$i++){$key[$i-1] = trim($bufLine[$i]);} if($bufLine[0][1] == '#') { $name = substr($bufLine[0],2); $flag_multi = true; } else { $name = substr($bufLine[0],1); $flag_multi = false; } } else { if($flag_multi){for($i=0;$i<sizeof($key);$i++){$result[$name][$count][$key[$i]] = trim($bufLine[$i]);}} else{for($i=0;$i<sizeof($key);$i++){$result[$name][$key[$i]] = trim($bufLine[$i]);}} $count++; } } return $result; }
거꾸로 array를 위와 같은 형식의 파일로 저장하고 싶은데.. 꽤 복합할 것 같네요 -_- 관심있으신분 도와주세요~~ :)
Forums:
손으로 직접 데이터를 작성하는거면 위의 코드가 효용성이 있을것 같지만,
손으로 직접 데이터를 작성하는거면 위의 코드가 효용성이 있을것 같지만,
php 가 코드를 뽑아내도록 할거면
serialize() 로 편하게 하는것을 추천합니다.
이철기
serialize하려면 웹 인터페이스를 구현해야하는데 귀찮고;
txt파일만 누군가가 upload해주면 내용을 생성해줘야 하기 때문에 위와 같은 파싱 루틴을 짰습니다 ㅎ
다음에 일일이 파싱하지 말고, serialize된 결과를 저장해서, 그걸 include하는 방식으로 번거롭지만 -_- 사용하고 있습니다 ㅎ
아, 정말 admin 인터페이스 구현해주기 귀찮아요 ㅠㅠ 차라리 제가 대신 해주는 것이 손이 덜 간다는 생각이 드네요;
웹 인터페이스를 구현해야 한다는 게 무슨 뜻인가요 ?_?저 내용은 s
웹 인터페이스를 구현해야 한다는 게 무슨 뜻인가요 ?_?
저 내용은 serialize로 다 구현될 것 같은데..
음...
예를 들어, 홈페이지에 들어갈 텍스트를 나라별로 구별하기 위해서 다음과 같은 내용이 필요하다 칩시다
이때 admin의 웹인터페이스가 필요합니다
이때, 위의 파일 업로드를 통해서 한다면
즉, serialize는 내부 구현의 문제입니다;; 그리고 serialize를 하려면 일단 php array로 있어야 하는 것 아닌가요? 그 array를 처음에 어떻게 생성하느냐.. 를 구현한 것이라고 보시면 되겠군요.
목적을 정확하게 안 적어놔서 혼란이 있는 것 같네요 ㅎ
[code:1]/// @brief 배열을 정해진 형식의 파일로 바꿈
지저분하네요~ 되는거 확인하고 바로 ㅎㅎ
근데 문자에 빈칸이 들어가면 좀 난감할 것 같네요~
댓글 달기