Подтвердить что ты не робот

PHP cli получает вход от пользователя, а затем сбрасывается в переменную?

Возможно ли получить вход от пользователя с помощью php cli, а затем сбрасывать ввод в переменную, а затем script идет вперед.

Как и функция С++ cin?

Возможно ли, если да, то как? Может быть, не только php, но, возможно, с некоторыми командами linux?

Спасибо

4b9b3361

Ответ 1

Взгляните на эту страницу руководства 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";
?>

Ответ 2

Вы можете просто сделать:

$line = fgets(STDIN);

чтобы прочитать строку со стандартного ввода в режиме CLI.

Ответ 3

В этом примере я расширяю пример 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";
?>

Также вы можете установить максимальные чартеры. Это мой личный пример. Я предлагаю использовать это как ваш код. Также рекомендуется использовать напрямую STDIN, чем "php://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";
?>