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);
?>
답변을 작성하시기 전에 로그인 해주세요.