ホームページ  >  記事  >  バックエンド開発  >  PHPの標準入出力

PHPの標準入出力

不言
不言オリジナル
2018-04-20 09:23:3119467ブラウズ

この記事は、一定の参考値を持つ PHP の標準入出力を紹介します。必要な友達は参考にしてください。

PHP の標準入出力について簡単に説明します。


7 か月前



今日は Sphere Online Judge で PHP を使用してオンラインでいくつかの質問に挑戦し、標準の入力と出力ですが、最近は PHP を書いていて、C は使いたくありません。プロジェクトを作成するときにフォームを送信することが多いのですが、これについてはまったく考慮していなかったので、ドキュメントを見てみました。


ドキュメントはここにあります: http://php.net/manual/zh/wrappers.php.php

1. PHP STDIN、STDOUT、STDERR の概要:

コマンド入力および出力ストリーム、コンソール (Linux シェルターミナル、Windows cmd ターミナル) の入力および出力コンテンツに使用されます。これらはデフォルトで開いており、直接読み書きできます。CLI (コマンドラインインターフェイス、コマンドラインインターフェイス) モードでのみ使用できます。これらは HTTP モードでは未定義です。

開いたコピーの内容php://stdinphp://stdoutphp://stderr 也无法输出内容到http浏览器,经测试:写入php://stderrはデフォルト サイトのエラー ログに入力され、他の 2 つは影響しません。

STDIN/STDOUT/STDERR 概要:

オリジナルストリーム ストリームオープンコピー 説明
STDIN php://stdin 標準入力、読み取り専用入力コンソールからのコンテンツ;
STDOUT php://stdout 標準出力(標準出力)、通常の情報をコンソールに出力するために使用されます
STDERR php: //stderr エラー出力 (標準エラー)、書き込み専用、エラー情報をコンソールに出力するために使用されます。

手動で開いたコピー ラッパーphp://stdin, php://stdout および php://stderrphp://stdin、 php://stdout 和 php://stderr

二、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://stdout2. PHP STDIN の使用法: PHP 言語の「STDIN」は、この定数に遭遇したとき、または fopen()関数が開きます<code style="font-family:monaco, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:.9em;padding:1px 2px;color:rgb(133,128,128);background: rgb(249,250,250);margin:5px;border:1px Solid rgb(228,228,228);">php://stdinスクリプトは、ユーザーが Enter キーを押して送信するまで、ユーザーがコンテンツを入力するのを待ちます。 書き込み stdin.phpTest it:

<?php
fwrite(STDOUT, "通过STDOUT写入;\n");
$demo = fopen("php://stdout", "w");
fwrite($demo, "通过php://stdout写入;");
fclose($demo);

Running results:

☁  test  php demo.php > a.txt
☁  test  cat a.txt
通过STDOUT写入;
通过php://stdout写入;%                                                        ☁  test  php demo.php
通过STDOUT写入;
通过php://stdout写入;%                                                        ☁  test

Three. PHP STDOUT の使用法:

PHP 言語で STDOUT は、標準情報をコンソールに出力するために使用されます。fopen() 関数に対して開かれます。 :monaco、Consolas、'Liberation Mono'、Menlo、Courier、monospace;font-size:.9em;padding:1px 2px;color:rgb(133,128,128);background:rgb(249,250,250);margin:5px;border:1pxソリッドrgb(228,228,228);">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.okSTDOUT写入的正常输出;
php://stdout写入的正常输出;☁  test   cat demo.errSTDERR写入的错误输出;
php://stderr写入的错误输出;

4. PHP STDERR の使用法:

PHP 言語の「STDERR」は、エラー情報を定数または

fopen に出力するために使用されます。 ()

関数で開いた「php://stderr」に書かれた内容は、コンソールの

エラー出力

に直接出力されます; エラー出力内容は、「

」を使用してファイルなどの指定した場所にリダイレクトできます2>PHPの標準入出力2>&1

" を使用して、エラー出力を標準出力に送り、それを標準出力とマージすることもできます。

テストしてみましょう

☁  test  php demo.php 1>AllInOne 2>&1☁  test  cat AllInOneSTDERR写入的错误输出;
STDOUT写入的正常输出;
php://stdout写入的正常输出;
php://stderr写入的错误输出;

通常の出力とエラー出力はそれぞれ異なるファイルに送信されます:PHPの標準入出力<pre class=<?php // your code here$x=0;while($x!=42){ $x = fgets(STDIN); if($x!=42){ echo sprintf("%d\n",$x);}}?>

通常の出力とエラー出力はマージされ、統合されたファイルに送信されます:

関連する推奨事項:

PHP の Smarty に関する詳細なメモ

php の名前空間と自動読み込み

php のダウンロード機能

以上がPHPの標準入出力の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。