2011-07-01 19 views

Trả lời

58

Hãy nhìn vào PHP của nhãn hiệu trang này http://php.net/manual/en/features.commandline.php

nói riêng

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

Hoạt động nhưng có cách tiếp cận nào tốt hơn? – kritya

+0

khi đọc tập tin đó sẽ làm cho chương trình một số khó hiểu – kritya

+0

nhưng nếu đây là cách duy nhất tôi khá giống với câu trả lời: P – kritya

72

Bạn chỉ có thể làm:

$line = fgets(STDIN); 

để đọc một dòng từ tiêu chuẩn đầu vào trong chế độ php CLI.

+0

cách đọc hơn 1 yếu tố đầu vào từ nó? – kritya

+1

Chỉ cần nối thêm một dòng khác như sau: '$ line2 = fgets (STDIN); ' – anubhava

+2

Và nếu bạn muốn đọc trong vòng lặp cho đến khi EOF sử dụng' while (FALSE! == ($ line = fgets (STDIN))) { echo "line = $ line"; } ' – anubhava

2

Trong ví dụ này tôi đang mở rộng ví dụ của Devjar. Tín dụng cho anh ta ví dụ mã. Ví dụ mã cuối cùng đơn giản và an toàn nhất theo ý kiến ​​của tôi.

Khi bạn sử dụng mã của mình:

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

Bạn nên lưu ý chế độ stdin không nhị phân-an toàn. Bạn nên thêm "b" vào chế độ của mình và sử dụng mã sau:

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

Bạn cũng có thể đặt điều lệ tối đa. Đây là ví dụ cá nhân của tôi. Tôi sẽ đề nghị sử dụng nó làm mã của bạn. Bạn cũng nên sử dụng STDIN trực tiếp hơn "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"; 
?> 
Các vấn đề liên quan