php cli 진행중에 진행여부를 묻기 채택완료
라균
2년 전
조회 1,081
</p>
<p> </p>
<pre>
$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;
}</pre>
<p>
코드를 짜고 실행해보니 y, n 상관없이 무조건 멈추더라구요 ㅠㅠ
</p>
<pre>
var_dump(strcasecmp($fileContents, 'y') != 0);</pre>
<p>
대소문자 구분하는것도 y, n 상관없이 true값이 나와요
진행여부 묻기 할때 어떻게 하는지 알려주시면 감사합니다
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
2년 전
콘솔에서의 입력확정을 위한 개행문자 까지 포함된 상태에서 비교를 해서 그런것 같습니다.
</p>
<p><?php
$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');</p>
<p>fputs($stdout, 'Are you continue? ');
$fileContents = fread($stdin, 1024);
fclose($stdin);</p>
<p>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);</p>
<p>fclose($stdout);
?></p>
<p>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인