php cli 진행중에 진행여부를 묻기

php cli 진행중에 진행여부를 묻기

QA

php cli 진행중에 진행여부를 묻기

본문


 

$stdin = fopen('php://stdin', 'r');
$fileContents = fread($stdin, 1024);
fclose($stdin);
echo $fileContents;
var_dump(!in_array($fileContents, ['yes', 'YES', 'y', 'Y']));
if (!in_array($fileContents, ['yes', 'YES', 'y', 'Y'])) {
  return false;
}

 

코드를 짜고 실행해보니 y, n 상관없이 무조건 멈추더라구요 ㅠㅠ

 



var_dump(strcasecmp($fileContents, 'y') != 0);

 

대소문자 구분하는것도 y, n 상관없이 true값이 나와요 
 

진행여부 묻기 할때 어떻게 하는지 알려주시면 감사합니다

이 질문에 댓글 쓰기 :

답변 1

콘솔에서의 입력확정을 위한 개행문자 까지 포함된 상태에서 비교를 해서 그런것 같습니다.


<?php
$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');
fputs($stdout, 'Are you continue? ');
$fileContents = fread($stdin, 1024);
fclose($stdin);
if (substr($fileContents, 0, 1) == 'y') {
    fputs($stdout, 'continue');
    for ($i = 0; $i < 3; $i++) {
        fputs($stdout, '.');
        sleep(1);
    }   
    fputs($stdout, PHP_EOL . 'ok');
} else {
    fputs($stdout, 'stop');
}
fputs($stdout, PHP_EOL);
fclose($stdout);
?>
답변을 작성하시기 전에 로그인 해주세요.
전체 44
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT