用PHP挑戰(zhàn)在線編程題
今天想在Sphere Online Judge中用PHP來在線挑戰(zhàn)一些題目,要用到標準輸入輸出,但最近在寫php又不想用c來寫,平時寫項目都是表單提交,還真沒有考慮過這個,于是看了下文檔。
文檔在此:http://php.net/manual/zh/wrappers.php.php
一、PHP STDIN、STDOUT、STDERR簡介:
STDIN
、STDOUT
、STDERR
命令輸入輸出流,用于向控制臺(linux shell終端、windows cmd終端)輸入、輸出內容,它們默認是已經打開的,可以直接對他們進行讀寫操作,它們只能在CLI(command-line interface,命令行界面)模式中使用,在Http模式時,它們是未定義的。
而他們的打開副本php://stdin
、php://stdout
、php://stderr
也無法輸出內容到http瀏覽器,經測試:寫入php://stderr
的內容將會輸入到默認站點的錯誤日志中,其它兩種無任何效果。
STDIN/STDOUT/STDERR簡介:
原始流 | 流打開副本 | 描述 |
---|---|---|
STDIN | php://stdin | 標準輸入(standard input),只讀,用于從控制臺輸入內容; |
STDOUT | php://stdout | 標準輸出(standard output),只寫,用于向控制臺輸出正常信息; |
STDERR | php://stderr | 錯誤輸出(standard error),只寫,用于向控制臺輸出錯誤信息; |
官方推薦使用常量 STDIN、 STDOUT 和 STDERR 來代替它們手動打開的副本封裝器php://stdin
、 php://stdout
和 php://stderr
。
【推薦學習:PHP視頻教程】
二、PHP STDIN用法:
PHP語言中"STDIN"用于從控制臺讀取內容,遇到此常量或者通過fopen()
函數打開php://stdin
腳本將會等待用戶輸入內容,直到用戶按下回車鍵提交。
寫個stdin.php
測試一下:
<?php echo "請輸入內容:"; $jimmy = fgets(STDIN); echo sprintf("輸入的內容為: %sn", $jimmy); $demo = fopen('php://stdin', 'r'); echo "請輸入: "; $test = fread($demo, 12); //最多讀取12個字符 echo sprintf("輸入為: %sn", $test); fclose($demo);
運行結果:
請輸入內容:sad 輸入的內容為: sad 請輸入: asdasdasdasdasdasd 輸入為: asdasdasdasd(這里因為設置了最多讀取12個字符,設置