Можно ли получить вход от пользователя с помощью php cli, а затем выгрузить вход в переменную, а затем запустить скрипт.
Как функция c ++ cin
?
Возможно ли, если да, то как? Может быть, не только php, но, возможно, с некоторыми командами linux?
благодаря
Взгляните на эту страницу руководства 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"; ?>
Вы можете просто сделать:
$line = fgets(STDIN);
для чтения строки со стандартного ввода в режиме CLI.
В этом примере я расширяю пример 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"; ?>