2011-07-01 9 views

Odpowiedz

58

Zapraszamy do obejrzenia tej PHP Manual stronie http://php.net/manual/en/features.commandline.php

w szczególności

<?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"; 
?> 
+0

Działa, ale lepsze podejście? – kritya

+0

jako ofc czytając ten plik sprawi, że program będzie trochę ciekawszy, – kritya

+0

, ale jeśli jest to jedyny sposób, w jaki bardzo podoba mi się odpowiedź: P – kritya

72

Można po prostu zrobić:

$line = fgets(STDIN); 

czytać wiersz z norma wejście w trybie php CLI.

+0

jak odczytać więcej niż 1 wejścia z niego? – kritya

+1

Po prostu dodaj kolejną linię w ten sposób: '$ linia2 = fgets (STDIN);' – anubhava

+2

A jeśli chcesz przeczytać w pętli do EOF, użyj 'while (FALSE! == ($ line = fgets (STDIN))) { echo "line = $ line"; } ' – anubhava

2

W tym przykładzie rozszerzam przykład Devjara. Kredyty dla niego na przykład kod. Ostatni przykład kodu jest najprostszy i najbezpieczniejszy moim zdaniem.

Podczas korzystania z jego kod:

<?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"; 
?> 

Należy pamiętać tryb stdin nie bezpieczna dla danych binarnych. Powinieneś dodać "b" do swojego trybu i użyć następującego kodu:

Możesz także ustawić maksymalne czartery. To jest mój osobisty przykład. Zasugeruję użycie tego jako kodu. Zalecane jest również użycie bezpośrednio STDIN niż "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"; 
?> 
Powiązane problemy