PHP standart giriş?

7 Cevap php

Ben PHP genellikle web geliştirme, orada is standart giriş hayır için kullanılır biliyorum, ama PHP takip yaparsanız korkak, web-tabanlı sözleşmeler var, genel amaçlı bir betik dili olarak kullanılabilir olduğunu iddia ediyor. Ben PHP stdout (veya ne olursa olsun onu aramak istiyorum) print ve echo, yeterince basit olduğu ile yazdırır biliyorum, ama ben merak ediyorum bir PHP komut dosyası stdin girdi alabilirsiniz (özellikle fgetc() ile, ancak herhangi bir giriş fonksiyonu iyi), ya bu bile mümkündür?

7 Cevap

Örneğin bir hat için fgets() ile ondan okumak (ya da gibi zaten o php://stdin için bir dosya tanıtıcısı oluşturup stdin okumak mümkün belirtti, fgetc() tek bir karakter için):

<?php
$f = fopen( 'php://stdin', 'r' );

while( $line = fgets( $f ) ) {
  echo $line;
}

fclose( $f );
?>

STDIN olan recommended way okuma

<?php
while (FALSE !== ($line = fgets(STDIN))) {
   echo $line;
}
?>

Kullanmak fopen() on php://stdin yapabilirsiniz:

$f = fopen('php://stdin', 'r');

IIRC, siz de aşağıdaki kullanabilirsiniz:

$in = fopen(STDIN, "r");
$out = fopen(STDOUT, "w");

Teknik aynı, ama biraz daha temiz sözdizimi-bilge.

A basit bir yöntemdir

$var = trim(fgets(STDIN));

, Filehandles etrafında karışıklık zorunda kalmamak file_get_contents() ve php://stdin kullanmak için:

$ echo 'Hello, World!' | php -r 'echo file_get_contents("php://stdin");'
Hello, World!

(Eğer veri gerçekten büyük miktarda okuyorsanız stdin Eğer dosyatanitici yaklaşım kullanmak isteyebilirsiniz, ama bu çok megabayt için iyi olmalıdır.)

Tek seferde tüm tut:

$contents = file_get_contents("php://stdin");
echo $contents;