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