>  기사  >  백엔드 개발  >  PHP를 사용하여 온라인 프로그래밍 질문에 도전할 수 있습니다!

PHP를 사용하여 온라인 프로그래밍 질문에 도전할 수 있습니다!

藏色散人
藏色散人앞으로
2021-04-01 17:27:012712검색

PHP를 사용하여 온라인 프로그래밍 질문에 도전할 수 있습니다!

PHP를 사용하여 온라인 프로그래밍 질문에 도전

오늘은 PHP를 사용하여 Sphere Online Judge에서 몇 가지 온라인 질문에 도전하고 싶습니다. 표준 입력과 출력을 사용해야 하는데 최근에 PHP를 작성하고 있어서 그만 두었습니다. C를 사용하고 싶지 않습니다. 저는 주로 프로젝트를 작성할 때 양식을 제출하는데, 이 점을 실제로 고려하지 않았기 때문에 문서를 살펴보았습니다.

문서는 여기에 있습니다: http://php.net/manual/zh/wrappers.php.php

1. PHP STDIN, STDOUT, STDERR 소개:

STDIN, STDOUT, STDERR 명령 입력 및 출력 스트림은 콘솔(Linux 쉘 터미널, Windows cmd 터미널)에 콘텐츠를 입력하고 출력하는 데 사용됩니다. 이들은 기본적으로 이미 열려 있으며 열 수 있습니다. 읽기 및 쓰기 작업은 CLI(명령줄 인터페이스, 명령줄 인터페이스) 모드에서만 사용할 수 있으며 HTTP 모드에서는 정의되지 않습니다. STDINSTDOUTSTDERR命令输入输出流,用于向控制台(linux shell终端、windows cmd终端)输入、输出内容,它们默认是已经打开的,可以直接对他们进行读写操作,它们只能在CLI(command-line interface,命令行界面)模式中使用,在Http模式时,它们是未定义的。

而他们的打开副本php://stdinphp://stdoutphp://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://stdinphp://stdoutphp://stderr

【推荐学习:PHP视频教程

二、PHP STDIN用法:

PHP语言中"STDIN"用于从控制台读取内容,遇到此常量或者通过fopen()函数打开php://stdin脚本将会等待用户输入内容,直到用户按下回车键提交。

写个stdin.php测试一下:

<?php
echo "请输入内容:";
$jimmy = fgets(STDIN);
echo sprintf("输入的内容为: %s\n", $jimmy);
 
$demo = fopen(&#39;php://stdin&#39;, &#39;r&#39;);
echo "请输入: ";
$test = fread($demo, 12); //最多读取12个字符
echo sprintf("输入为: %s\n", $test);
fclose($demo);

运行结果:

请输入内容:sad
输入的内容为: sad

请输入: asdasdasdasdasdasd
输入为: asdasdasdasd(这里因为设置了最多读取12个字符,设置更多一些就可以完整显示)

三、PHP STDOUT用法:

PHP语言中STDOUT用于向控制台输出标准信息;向此常量、或者向fopen()函数打开的php://stdout그리고 열린 복사본 php://stdin, php://stdout, php://stderr은 콘텐츠를 http 브라우저에 출력할 수 없습니다. , 테스트 후: php://stderr에 작성된 내용은 기본 사이트의 오류 로그에 입력되며 나머지 두 가지는 아무런 영향을 미치지 않습니다. STDIN/STDOUT/STDERR 소개:

원본 스트림스트림 공개 사본설명
STDINphp://stdin표준 입력(표준 입력), 읽기 전용, 사용됨 콘솔에서 콘텐츠 입력;
STDOUTphp://stdout표준 출력(표준 출력), 쓰기 전용 , 일반 정보를 콘솔에 출력하는 데 사용됩니다.
STDERRphp://stderr오류 출력(표준) error ), 쓰기 전용,

오류 메시지

를 콘솔에 출력하는 데 사용됩니다.

수동으로 열린 복사본을 대체하려면 STDIN, STDOUT 및 STDERR 상수를 사용하는 것이 공식적으로 권장됩니다. 패키지 서버 php://stdin, php://stdoutphp://stderr.

【추천 학습: PHP 동영상 튜토리얼

2. PHP STDIN 사용법:

PHP 언어의 "STDIN"은 이 상수를 발견하거나 fopen()을 통해 php:/를 열 때 사용됩니다. function /stdin스크립트는 사용자가 Enter 키를 눌러 제출할 때까지 사용자 입력을 기다립니다. stdin.php를 작성하여 테스트하세요:

<?php
fwrite(STDOUT, "通过STDOUT写入;\n");
 
$demo = fopen("php://stdout", "w");
fwrite($demo, "通过php://stdout写入;");
fclose($demo);
실행 결과:
☁  test  php demo.php > a.txt
☁  test  cat a.txt
通过STDOUT写入;
通过php://stdout写入;% 

☁  test  php demo.php
通过STDOUT写入;
通过php://stdout写入;% 
☁  test
3. PHP STDOUT 사용법: PHP 언어에서는 STDOUT을 사용하여 전송합니다. 콘솔 출력 표준 정보에 대한 메시지; 이 상수 또는

fopen()

함수에 의해 열린 php://stdout에 작성된 내용은 콘솔의

표준 출력

으로 직접 출력됩니다. ; 표준 출력의 내용 "

>

" 또는 "

1>

"을 사용하여 파일과 같은 지정된 위치로 리디렉션할 수 있습니다.

마찬가지로 테스트용 파일을 작성해 보겠습니다

<?php
fwrite(STDERR, "STDERR写入的错误输出;\n");
 
fwrite(STDOUT, "STDOUT写入的正常输出;\n");

$stdout = fopen("php://stdout", "w");
fwrite($stdout, "php://stdout写入的正常输出;\n");
fclose($stdout);

$stderr = fopen("php://stderr", "w");
fwrite($stderr, "php://stderr写入的错误输出;\n");
fclose($stderr);

실행:

☁  test  php demo.php 1>demo.ok 2>demo.err
☁  test   cat demo.ok
STDOUT写入的正常输出;
php://stdout写入的正常输出;
☁  test   cat demo.err
STDERR写入的错误输出;
php://stderr写入的错误输出;
4. PHP STDERR 사용법:
🎜PHP 언어의 "STDERR"은 오류 정보를 상수 또는 🎜fopen에 출력하는 데 사용됩니다. ()🎜함수로 열린 "php://stderr"에 작성된 내용은 콘솔의 🎜오류 출력🎜으로 직접 출력됩니다. 오류 출력 내용은 "🎜를 사용하여 파일 등 지정된 위치로 리디렉션할 수 있습니다. 2>🎜" ; "🎜2>&1🎜"을 사용하여 오류 출력을 표준 출력으로 지정하고 이를 표준 출력과 병합할 수도 있습니다. 🎜🎜테스트해 보겠습니다🎜
☁  test  php demo.php 1>AllInOne 2>&1
☁  test  cat AllInOne
STDERR写入的错误输出;
STDOUT写入的正常输出;
php://stdout写入的正常输出;
php://stderr写入的错误输出;
🎜정상 출력과 오류 출력은 각각 다른 파일로 전달됩니다.🎜
<?php
    // your code here
$x=0;
while($x!=42){
   $x = fgets(STDIN);
   if($x!=42){
   echo sprintf("%d\n",$x);
}
}
?>
🎜정상 출력과 오류 출력은 병합되어 통합 파일로 전달됩니다.🎜rrreee🎜좋아요, 다음은 Sphere Online Judge로 이동하세요. , 먼저 데모 주제 테스트 🎜🎜코드 작성🎜rrreee🎜Submit🎜🎜하하하하, 괜찮습니다. 더 이상 Java와 C에만 국한되지 않습니다. PHP로 몇 가지 질문에 도전할 수 있습니다. 누구나 시도해 볼 수 있나요?🎜🎜

위 내용은 PHP를 사용하여 온라인 프로그래밍 질문에 도전할 수 있습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제