[php]fscanf

PHP의 fscanf 함수

fscanf 함수는 파일 포인터를 통해 서식에 맞게 파일에서 데이터를 읽어올 때 사용됩니다. fscanffgetc 또는 fgets와 달리 특정 서식에 따라 파일에서 데이터를 파싱하여 가져올 수 있습니다.

fscanf 함수의 사용 예시:

$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    $result = fscanf($fileHandle, "%s %s %d", $name, $surname, $age);
    if ($result === 3) {
        echo "Name: $name, Surname: $surname, Age: $age";
    } else {
        echo "Failed to parse data from the file.";
    }
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

위 예시는 파일 ‘data.txt’를 읽기 모드로 열고, 파일에서 문자열 두 개와 정수 한 개를 가져와서 출력합니다.

다른 함수와 함께 사용하는 예시:

  1. fscanfwhile 반복문을 함께 사용하여 여러 줄의 데이터 읽기:
$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    while (($result = fscanf($fileHandle, "%s %s %d", $name, $surname, $age)) === 3) {
        echo "Name: $name, Surname: $surname, Age: $age" . PHP_EOL;
    }
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

위 예시는 파일 ‘data.txt’에서 여러 줄의 데이터를 읽어와서 출력합니다.

조건문과 반복문과 함께 사용하는 예시:

$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    while (($result = fscanf($fileHandle, "%s %s %d", $name, $surname, $age)) === 3) {
        if ($age >= 18) {
            echo "Name: $name, Surname: $surname, Age: $age (Adult)" . PHP_EOL;
        } else {
            echo "Name: $name, Surname: $surname, Age: $age (Minor)" . PHP_EOL;
        }
    }
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

위 예시는 파일 ‘data.txt’에서 읽은 데이터의 나이에 따라서 성인인지 미성년자인지 출력합니다.

성능 향상을 위한 팁:

  1. fscanf는 특정 서식에 따라 파일을 파싱하기 때문에, 올바른 서식을 지정해야 합니다. 잘못된 서식을 지정하면 데이터를 올바르게 읽어오지 못할 수 있습니다.

  2. 대량의 데이터를 처리할 때는 한 번에 모든 데이터를 메모리에 저장하지 않고, 필요한 만큼 분할하여 처리하는 것이 메모리 효율적이며 성능에 도움이 됩니다.


게시됨

카테고리

,

작성자