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

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

QA

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

답변 1

본문


 

$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);
?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1
© SIRSOFT
현재 페이지 제일 처음으로