मुझे पता है कि PHP आमतौर पर वेब विकास के लिए उपयोग किया जाता है, जहां कोई मानक इनपुट नहीं है, लेकिन यदि आप इसका मज़ाकिया वेब-आधारित सम्मेलनों का पालन करते हैं तो PHP सामान्य प्रयोजन स्क्रिप्टिंग भाषा के रूप में उपयोग करने योग्य दावा करता है। मुझे पता है कि PHP stdout
(या जिसे आप इसे कॉल करना चाहते हैं) print
और echo
के साथ प्रिंट करता है, जो कि काफी आसान है, लेकिन मुझे आश्चर्य है कि PHP स्क्रिप्ट को stdin
से इनपुट प्राप्त हो सकता है (विशेष रूप से fgetc()
के साथ, लेकिन कोई भी इनपुट फ़ंक्शन है अच्छा), या यह भी संभव है?PHP मानक इनपुट?
उत्तर
यह संभव php://stdin
के लिए एक फ़ाइल हैंडल बनाने के द्वारा stdin
को पढ़ने के लिए और फिर उदाहरण के लिए एक लाइन के लिए fgets()
साथ इसे से पढ़ (या, आप के रूप में पहले से ही है कहा गया है, fgetc()
एकल वर्ण के लिए):
<?php
$f = fopen('php://stdin', 'r');
while($line = fgets($f)) {
echo $line;
}
fclose($f);
?>
आप fopen()
php://stdin
पर उपयोग कर सकते हैं:
$f = fopen('php://stdin', 'r');
IIRC, आप निम्न का उपयोग भी कर सकते हैं:
$in = fopen(STDIN, "r");
$out = fopen(STDOUT, "w");
तकनीकी रूप से वही, लेकिन थोड़ा क्लीनर वाक्यविन्यास-वार।
यह एक टिप्पणी –
से पढ़ना STDINrecommended way
<?php
while (FALSE !== ($line = fgets(STDIN))) {
echo $line;
}
?>
है filehandles के साथ चारों ओर गंदगी के लिए होने से बचने के लिए, का उपयोग file_get_contents()
और php://stdin
:
$ echo 'Hello, World!' | php -r 'echo file_get_contents("php://stdin");'
Hello, World!
(आप में से एक सही मायने में बड़ी राशि पढ़ रहे हैं stdin
से डेटा आप फ़ाइलहेडल दृष्टिकोण का उपयोग करना चाहेंगे, लेकिन यह कई मेगाबाइट्स के लिए अच्छा होना चाहिए।)
'file_get_contents' होनी चाहिए .... फ़ाइल की गड़बड़ी के रूप में एक बड़ी समस्या देगी। – Pacerier
एक सरल विधि एक शॉट में
$var = trim(fgets(STDIN));
इसके अलावा हम '$ सामग्री = file_get_contents (" php: // input ") का उपयोग कर सकते हैं;' –
ले लो यह सब है:
$contents = file_get_contents("php://stdin");
echo $contents;
यह भी काम करता है:
$data = stream_get_contents(STDIN);
fgets का उपयोग करते समय पार्टी लिपियों में ब्लॉक कर सकते हैं, यदि stdin
@
php error control operator का उपयोग करते समय सेट या खाली नहीं है।
#!/usr/bin/php
<?php
stream_set_blocking(STDIN, 0);
$pipe = @trim(fgets(STDIN));
// Script was called with an empty stdin
// No errors or warnings, continue
- 1. मानक इनपुट
- 2. मानक इनपुट
- 3. मानक इनपुट
- 4. सीएलआई मानक इनपुट
- 5. कर्नेल # मानक इनपुट
- 6. मानक इनपुट से पार्सिंग
- 7. बैश - मानक इनपुट
- 8. php इनपुट
- 9. एचटीएमएल इनपुट फ़ील्ड के लिए मानक नाम
- 10. php: // इनपुट रिक्त खाली
- 11. PHP इनपुट स्ट्रीम आकार सीमाएं
- 12. मानक इनपुट गैर-अवरोधन से कैसे पढ़ा जाए?
- 13. symfony2 एप्लिकेशन, वारंटी और चींटी: stty: मानक इनपुट: अमान्य तर्क
- 14. जावास्क्रिप्ट के साथ मानक इनपुट पढ़ने का कोई तरीका है?
- 15. NSTasks मानक इनपुट करने के लिए लिखें लांच
- 16. बैश: मानक इनपुट गतिशील रूप से एक स्क्रिप्ट
- 17. विंडोज कंसोल ऐप के मानक इनपुट में टेक्स्ट भेजें
- 18. लाइन द्वारा मानक इनपुट लाइन से कैसे पढ़ा जाए?
- 19. प्रक्रिया में छवि लिखने का तेज़ तरीका। मानक इनपुट। बेसस्ट्रीम
- 20. PHP स्ट्रीमिंग का उपयोग कर PHP और इनपुट स्ट्रीम
- 21. कोडइग्निटर - रेडियो इनपुट पर PHP Set_Radio
- 22. मानक बनाम मानक एचटीएमएल
- 23. मानक?
- 24. पर्ल Padre आईडीई मानक
- 25. रिमोट गिट एक मानक मानक
- 26. PHP ज़ेंड फ्रेमवर्क कोडिंग मानक, जो अधिक पठनीय दृष्टिकोण है?
- 27. PHP में प्रलेखन के लिए एक मानक शैली है?
- 28. क्या कोई PHPCS मानक लक्ष्यीकरण PHP docblocks है?
- 29. क्या php के लिए कोई मानक फ्रेमवर्क है?
- 30. मौजूदा मानक शैली और कोडिंग मानक दस्तावेज़
तुम भी बजाय इसे मैन्युअल रूप से खोलने की पूर्वनिर्धारित निरंतर STDIN इस्तेमाल कर सकते हैं:
यह व्यवहार php शीर्षक पर
stream_set_blocking
स्थापित करने से बचा जा सकता $ लाइन = fgets (STDIN); – gixएसटीडीआईएन मेरे लिए काम नहीं करता था, लेकिन 'php: // stdin', 'r' किया था। Vista पर PHP 5.2.9-2 (क्ली) का उपयोग करना (बनाया गया: 9 अप्रैल 200 9 08:19:19)। –
@EricJ।, अजीब, यह कैसे हुआ? क्या आपने 'STDIN' 'बंद कर दिया था? – Pacerier