codememo

PHP CLI는 사용자로부터 입력을 받은 다음 변수에 덤프하는 것이 가능합니까?

tipmemo 2023. 8. 16. 22:24
반응형

PHP CLI는 사용자로부터 입력을 받은 다음 변수에 덤프하는 것이 가능합니까?

php cli를 사용하여 사용자로부터 입력을 받은 다음 입력을 변수에 덤프하고 스크립트가 진행되는 것이 가능합니까?

마치 c++처럼.cin기능?

만약 그렇다면 그것이 가능합니까? 아마도 php 뿐만 아니라 아마도 몇몇 리눅스 명령들로?

php CLI 모드에서 표준 입력에서 행을 읽으려면 다음을 수행합니다.

$fin = fopen ("php://stdin","r");
$line = fgets($fin);

PHP의 이전 버전에서STDIN상수가 작동할 수도 있습니다.

$line = fgets(STDIN);

입력에서 모든 내용을 읽으려면 다음을 사용합니다.

file_get_contents('php://input');

이 PHP 설명서 페이지를 보세요. http://php.net/manual/en/features.commandline.php

특히

<?php
echo "Are you sure you want to do this?  Type 'yes' to continue: ";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if(trim($line) != 'yes'){
    echo "ABORTING!\n";
    exit;
}
echo "\n";
echo "Thank you, continuing...\n";
?>

이 예에서 저는 Devjar의 예를 확장하고 있습니다.예제 코드에 대한 크레딧입니다.마지막 코드 예제가 가장 간단하고 안전하다고 생각합니다.

그의 코드를 사용할 때:

<?php
echo "Are you sure you want to do this?  Type 'yes' to continue: ";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if(trim($line) != 'yes'){
echo "ABORTING!\n";
exit;
}
echo "\n";
echo "Thank you, continuing...\n";
?>

stdin 모드는 바이너리 세이프가 아닙니다.모드에 "b"를 추가하고 다음 코드를 사용해야 합니다.

<?php
echo "Are you sure you want to do this?  Type 'yes' to continue: ";
$handle = fopen ("php://stdin","rb"); // <-- Add "b" Here for Binary-Safe
$line = fgets($handle);
if(trim($line) != 'yes'){
echo "ABORTING!\n";
exit;
}
echo "\n";
echo "Thank you, continuing...\n";
?>

또한 최대 차터를 설정할 수 있습니다.이것은 제 개인적인 예입니다.이것을 당신의 코드로 사용하는 것을 제안하겠습니다.또한 "php://stdin"보다는 직접 STDIN을 사용하는 것이 좋습니다.

<?php
/* Define STDIN in case if it is not already defined by PHP for some reason */
if(!defined("STDIN")) {
define("STDIN", fopen('php://stdin','rb'))
}

echo "Hello! What is your name (enter below):\n";
$strName = fread(STDIN, 80); // Read up to 80 characters or a newline
echo 'Hello ' , $strName , "\n";
?>

마찬가지로 파이썬과 같은 함수를 만들 수 있습니다.

$line = input("Please put in a number: ");
if ($line === 20){
    echo true;
} else {
    echo false;
}

function input(string $prompt = null): string
{
    echo $prompt;
    $handle = fopen ("php://stdin","r");
    $output = fgets ($handle);
    return trim ($output);
}

언급URL : https://stackoverflow.com/questions/6543841/php-cli-getting-input-from-user-and-then-dumping-into-variable-possible

반응형