PHP 샘플코드 - 파일입출력과 문자열 파싱

Posted by ironmask84
2017. 10. 17. 10:21 나는 프로그래머다!/PHP



C언어 버젼에 이어 PHP 버젼으로도 파일입출력과 문자열 파싱 들어갑니다!
http://ironmask.net/392 )

전반적으로 C언어와 비슷한데,

함수가 좀 더 사용성이 좋고, 다양한 느낌이 있습니다.

이용한 함수보다 더 다양하게 제공되는 함수들이 있으니,

간략하게 잘 정리된 블로그를 공유드립니다. ( http://slreference.tistory.com/8 )


주제 요약 설명

PHP 언어로 파일을 읽어와서

특정 키워드 를 포함하는 함수를 통해 값을 얻어오고,

특정 delimiter로 파싱해서 결과물을 얻는 코드 입니다.

주요 사용 함수는 fopen, fgets, parse_strisset, 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




 
이 댓글을 비밀 댓글로