Dieser Artikel stellt die Standard-Eingabe und -Ausgabe von PHP vor, die einen gewissen Referenzwert haben. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.
Heute möchte ich PHP in Sphere Online verwenden Richter, ich bin gekommen, um einige Fragen online zu stellen, was die Verwendung von Standardeingaben und -ausgaben erfordert, aber ich schreibe seit kurzem PHP und möchte zum Schreiben normalerweise keine Formulare verwenden, an die ich wirklich nicht gedacht habe also habe ich einen Blick auf die Dokumentation geworfen.
Das Dokument ist hier: http://php.net/manual/zh/wrappers.php.php
STDIN
, STDOUT
, STDERR
Befehlseingabe- und -ausgabestreams, die zum Ein- und Ausgeben von Inhalten in die Konsole (Linux-Shell-Terminal, Windows-CMD-Terminal) verwendet werden Sind sie bereits geöffnet, können Sie sie direkt lesen und schreiben. Sie können nur im CLI-Modus (Befehlszeilenschnittstelle) verwendet werden. Im HTTP-Modus sind sie undefiniert.
Und ihre geöffneten Kopien php://stdin
, php://stdout
und php://stderr
können auch keine Inhalte an den http-Browser ausgeben. Nach dem Test: Der in php://stderr
geschriebene Inhalt wird in das Fehlerprotokoll der Standardeinstellung eingetragen Website. Andere Beide haben keine Wirkung.
STDIN/STDOUT/STDERR Einführung:
原始流 | 流打开副本 | 描述 |
---|---|---|
STDIN | php://stdin | 标准输入(standard input),只读,用于从控制台输入内容; |
STDOUT | php://stdout | 标准输出(standard output),只写,用于向控制台输出正常信息; |
STDERR | php://stderr | 错误输出(standard error),只写,用于向控制台输出错误信息; |
Es wird offiziell empfohlen, die Konstanten STDIN, STDOUT und STDERR anstelle ihrer manuell geöffneten Kopier-Wrapper php://stdin
, php://stdout
und php://stderr
zu verwenden.
„STDIN“ in der PHP-Sprache wird verwendet, um Inhalte von der Konsole zu lesen oder das fopen()
-Skript über die Funktion php://stdin
zu öffnen , wartet das Skript auf Benutzereingaben, bis der Benutzer zum Senden die Eingabetaste drückt.
Schreiben Sie einen stdin.php
Test:
<?php echo "请输入内容:"; $jimmy = fgets(STDIN); echo sprintf("输入的内容为: %s\n", $jimmy); $demo = fopen('php://stdin', 'r'); echo "请输入: "; $test = fread($demo, 12); //最多读取12个字符 echo sprintf("输入为: %s\n", $test);fclose($demo);
Laufergebnisse:
请输入内容:sad 输入的内容为: sad 请输入: asdasdasdasdasdasd 输入为: asdasdasdasd(这里因为设置了最多读取12个字符,设置更多一些就可以完整显示)
In PHP-Sprache STDOUT
wird verwendet, um Standardinformationen an die Konsole auszugeben; Inhalte, die in diese Konstante oder in die durch die Funktion fopen() geöffnete php://stdout
geschrieben werden, werden direkt an die Standardausgabe< 🎜 der Konsole ausgegeben >; Der Inhalt der Standardausgabe kann mit „>“ oder „1>“ an einen bestimmten Ort, beispielsweise eine Datei, umgeleitet werden.
<?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
fopen() geöffnet wurde, werden direkt an den Error der Konsole ausgegeben Ausgabe; Der Inhalt der Fehlerausgabe kann mit „2>“ an einen bestimmten Ort umgeleitet werden Den Fehler ausgeben. Wird an die Standardausgabe weitergeleitet und mit der Standardausgabe zusammengeführt. Lass es uns testen
Normale Ausgabe und Fehlerausgabe werden an verschiedene Dateien weitergeleitet:
<?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);
Normale Ausgabe und Fehlerausgabe werden zusammengeführt und an eine einheitliche weitergeleitet Datei:
☁ test php demo.php 1>demo.ok 2>demo.err ☁ test cat demo.okSTDOUT写入的正常输出; php://stdout写入的正常输出;☁ test cat demo.errSTDERR写入的错误输出; php://stderr写入的错误输出;
Okay, jetzt können Sie zu Sphere Online Judge gehen, um zuerst das Demothema zu testen
☁ test php demo.php 1>AllInOne 2>&1☁ test cat AllInOneSTDERR写入的错误输出; STDOUT写入的正常输出; php://stdout写入的正常输出; php://stderr写入的错误输出;
Schreiben Sie einen Code
Senden
<?php // your code here$x=0;while($x!=42){ $x = fgets(STDIN); if($x!=42){ echo sprintf("%d\n",$x);}}?>
Hahahaha, völlig ok, nicht mehr auf Java und C beschränkt, ich kann PHP verwenden, um einige Fragen zu beantworten, jeder kann es auch ausprobieren
Verwandte Empfehlungen:
Weiterführende Hinweise zu PHPs Smarty
PHPs Namespace und automatisches Laden
Das obige ist der detaillierte Inhalt vonDie Standardeingabe und -ausgabe von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!