Sunday, June 03, 2007
PHP CLI, Y/N, Yes/No/Cancel(예,아니오,취소) 키보드 입력 받기; getc, Get A Key
키보드로부터 딱 1글자만 입력받는 예제입니다. 아래 예제에서는 Yes/No/Cancel 을 y,n,c 한 글자만 입력받아 처리합니다. 위험한 작업에 앞서 사용자로부터 선택 사항을 입력 받거나 허락을 받는 용도입니다. C언어의 getch() 함수에 해당하는 함수가 없어서, 아래와 같이 직접 만들어 주었습니다. 아래의 getch() 함수는 편의상, 모든 글자를 소문자로 변환하여 반환합니다. 그런데 Enter키를 꼭 쳐주어야 한다는 불편함이 있습니다. 이것은 해결할 방법이 없더군요.
사용자가 엉뚱한 키를 입력했을 때에는 다시 입력받습니다.
소스 파일명: getch.php
위의 예제 소스 실행 결과 화면:
사용자가 엉뚱한 키를 입력했을 때에는 다시 입력받습니다.
getch: 사용자로부터, 알파벳 한 글자만 입력 받기 예제
소스 파일명: getch.php
<?php
print "예/아니오/취소 선택 (Y/N/C) ? ";
for (;;) {
$c = getch();
if ($c == 'y') { print "YES\n"; break; }
if ($c == 'n') { print "NO\n"; break; }
if ($c == 'c') { print "CANCEL\n"; break; }
}
// 키보드로부터 직접, 영문 한 글자만 입력받는 함수
function getch() {
$fp = fopen("con", "rb");
$c = fread($fp, 1);
fclose($fp);
// 소문자로 변환 후 반환
return strtolower($c);
}
?>
print "예/아니오/취소 선택 (Y/N/C) ? ";
for (;;) {
$c = getch();
if ($c == 'y') { print "YES\n"; break; }
if ($c == 'n') { print "NO\n"; break; }
if ($c == 'c') { print "CANCEL\n"; break; }
}
// 키보드로부터 직접, 영문 한 글자만 입력받는 함수
function getch() {
$fp = fopen("con", "rb");
$c = fread($fp, 1);
fclose($fp);
// 소문자로 변환 후 반환
return strtolower($c);
}
?>
위의 예제 소스 실행 결과 화면:
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? y
YES
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? n
NO
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? c
CANCEL
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? Y
YES
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? N
NO
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? C
CANCEL
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? uuu
eee
u
t
y
YES
D:\Z>
예/아니오/취소 선택 (Y/N/C) ? y
YES
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? n
NO
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? c
CANCEL
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? Y
YES
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? N
NO
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? C
CANCEL
D:\Z>php getch.php
예/아니오/취소 선택 (Y/N/C) ? uuu
eee
u
t
y
YES
D:\Z>
tag: php
PHP
<< Home