테스트 사이트 - 개발 중인 베타 버전입니다

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>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인