PHP 샘플코드 - 파일입출력과 문자열 파싱
C언어 버젼에 이어 PHP 버젼으로도 파일입출력과 문자열 파싱 들어갑니다!
( http://ironmask.net/392 )
전반적으로 C언어와 비슷한데,
함수가 좀 더 사용성이 좋고, 다양한 느낌이 있습니다.
이용한 함수보다 더 다양하게 제공되는 함수들이 있으니,
간략하게 잘 정리된 블로그를 공유드립니다. ( http://slreference.tistory.com/8 )
주제 요약 설명
PHP 언어로 파일을 읽어와서,
특정 키워드 를 포함하는 함수를 통해 값을 얻어오고,
특정 delimiter로 파싱해서 결과물을 얻는 코드 입니다.
주요 사용 함수는 fopen, fgets, parse_str, isset, strchr, explode입니다.
프로그래밍 언어의 기본 문법과 함수에 대한 사용법을 어느 정도 숙지하신 것을
기본 전제로 진행합니다. ^^
샘플 코드
아래 코드는 file을 읽어와서 내장함수 parse_str을 이용한 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php // form을 wifiSet.php로 보내서, 파일 저장 include "settings.php"; // wifi setting $fp = fopen("wifisetting.txt", "r+"); if (!$fp) { die("<br/>Failed to open file."); echo "<script> alert('Failed to open file.'); </script>"; } // wifienable=0&networkName=1 형식의 문자열을 wifienable 변수 생성 후 0을 넣어주고, networkName변수 생성 후 1을 넣어주는 함수 parse_str(fgets($fp)); // 예외처리는 각 설정에 대한 변수가 있느냐? isset() 함수 그리고 그 변수에 값이 있느냐? empty() 함수 <- true/false 반환 // 예외에 걸리면, 보드에서 새로 값 가져오기? or 설정파일 다시 생성?? if(isset($wifienable)){ // 예외처리를 위한 $wifienable 변수 존재 여부 $WIFI_Setting['wifienable'] = $wifienable; } if(isset($networkName)){ $WIFI_Setting['networkName'] = $networkName; } if(isset($channelselect)){ $WIFI_Setting['channelselect'] = $channelselect; } fclose($fp); ?> | cs |
아래는 웹에서 접근했을 때 외부프로그램인 윈도우에서 제공하는 ipconfig 명령어를 수행한 결과를
strchr과 explode를 이용해서 문자열을 파싱해서 값을 얻어오는 부분입니다.
1 2 3 4 5 6 7 8 9 10 11 | <?php $data1 = iconv("EUC-KR", "UTF-8", shell_exec("ipconfig")); // ironmask unicode 문제 해결 2017-09-18 $data1_token1 = strchr($data1, "이더넷"); // 전체 문자열에서 '이더넷' 문자열이 나오는 부분부터 끝까지 값 복사 $data1_token2 = strchr($data1_token1, "IPv4 주소 . . . . . . . . . : "); $data1_token3 = explode(" ", $data1_token2); // delimiter로 문자열 자르기 $data1_Ipv4 = explode(".", $data1_token3[12]); // 원하는 문자열 값 얻기 echo $data1_Ipv4[0] . "." . $data1_Ipv4[1] . "." . $data1_Ipv4[2] . "." . $data1_Ipv4[3]; // IPv4 출력 ?> | cs |
아래는 위 소스에서 사용된 파일을 write하는 내용 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $wifienable = $_POST['wifienable']; // Radio Button $networkName = $_POST['networkName']; // check box $networkName_count = count($_POST['networkName']); // check box 에서 체크된 녀석 count $channelselect = $_POST['channelselect']; // Select Button $fp = fopen("wifisetting.txt", "w+"); if (!$fp) { die("<br/>Failed to open file."); echo "<script> alert('Failed to open file.'); </script>"; } fwrite($fp, "wifienable="); fwrite($fp, $wifienable."&"); fwrite($fp, "networkName="); fwrite($fp, $networkName_count."&"); // 우선은, 체크박스가 1개인 경우는 체크되면 1 아니면 0 fwrite($fp, "channelselect="); fwrite($fp, $channelselect); fclose($fp); echo "<script> window.open('wifi.php', '_self', ' '); </script>"; ?> | cs |
'나는 프로그래머다! > PHP' 카테고리의 다른 글
PHP와 Javascript 동작 개념 (0) | 2017.10.17 |
---|