PHP हमें दो ऐसे Functions Provide करता है, जिनका प्रयोग करके हम किसी Data को Formatted Form में File में Write कर सकते हैं और उसी Formatted Form में Data को फिर से Read भी कर सकते हैं। ये दोनों Functions निम्नानुसार हैं:
fprintf() Function
ये Function printf() Function की तरह ही काम करता है, लेकिन ये Function Data को Output में नहीं बल्कि किसी File Pointer से Associated File में Write करता हैं। इस Function का Syntax निम्नानुसार होता हैः
mixed fprintf(resource $handle, string $format, string var1, …)
हम printf() Function के साथ जितने तरह की Formatting Use कर सकते हैं, उन सभी को हम इस Function के साथ भी Use कर सकते हैं। बस अन्तर केवल इतना है कि हम इस Function का प्रयोग करके जो Formatting करते हैं, वे सभी Formatting उस File में जाकर Store हो जाती हैं, जिन्हें इस Function में First Parameter के रूप में Specify किया गया होता है।
fwrite() Function को Use करते हुए हमने जिस User Registration PHP Page को Create किया था, उसी register.php Page को हम निम्न Code द्वारा नए तरीके से Create कर सकते हैं:
//Filename: register.php <?php $title = "Registered"; include_once('header.php'); $name = $_REQUEST['name']; $email = $_REQUEST['email']; $username = $_REQUEST['username']; $password = $_REQUEST['password']; $subscribers = fopen("subscribers.txt","a+"); if(fprintf($subscribers, "Name:%s\tEMail:%s\tUsername:%s\tPassword:%s\n", $name, $email, $username, $password)){ echo "<h1>Registration Successfully</h1>"; } else{ echo "<h1>Registration Failed! Please try again.</h1>"; } include_once('footer.php'); ?>
ये PHP Page भी User की Information को subscriber.txt नाम की File में Store करेगा, लेकिन इस बार ये Information एक Well Formatted String के रूप में Store होंगी। यदि हम subscribers.txt नाम की File को Open करें, तो उसमें दिखाई देने वाले Contents निम्नानुसार होंगेः
![Formatted File Writing and Reading in PHP - Hindi](https://www.bccfalna.com/ebooks/wp-content/uploads/ebooks/2015/12/Formatted-File-Writing-and-Reading-in-PHP-Hindi-0-580x89.png)
जब हम इस Function को Use करके किसी Data को File में Write करते हैं, तब हमें इस बात का ध्यान रखना चाहिए कि हर Whitespace या Blank Space को fscanf() Function Read करते समय एक “\t” के रूप में Identify करता है।
इसलिए $format Specify करते समय जहां भी जरूरत हो, Blank Space के स्थान पर Tag का प्रयोग किया जाए, ताकि Data को फिर से Read करते समय हमें उतने ही Tabs का प्रयोग करना पडे, जितने हमने fprintf() में Use किए हैं।
यानी हमें निम्न String को इसी तरह से Specify करना चाहिए। ‘%s’ व ‘\t’ के बीच तथा किसी भी अन्य Word के बीच में एक भी Space नहीं देना चाहिए। यदि हम एक भी Extra Space देते हैं, तो उस स्थिति में fscanf() Function इस File के Contents को ठीक से Read करने में सक्षम नहीं होता।
fprintf($subscribers, “Name:%s\tEMail:%s\tUsername:%s\tPassword:%s\n”,
fscanf() Function
ये Function भी Exactly sscanf() Function की तरह ही काम करता है। अन्तर केवल इतना है कि ये Function किसी Specified File Handle से Formatted Data को Read करता है यानी यदि File में Whitespace के लिए Tab का प्रयोग किया गया है, तो ये Function Tab को “\t” के रूप में Return करता है।
इस Function को एक बार Call करने पर ये Function File से एक Line को Read करता है। यानी पूरी File के Data को Read करने के लिए हमें इस Function को भी तब तक Call करना पडता है, जब तक कि File Pointer EOF पर न पहुंच जाए। इस Function का Syntax निम्नानुसार होता हैः
mixed fscanf(resource $handle, string $format, string var1, …)
यदि इस Function में केवल दो ही Parameters Pass किए जाऐं, तो ये Function File से Read होने वाली Values का एक Array Return करता है। जबकि Optional Parameters Pass करने की स्थिति में ये Function $format में Specified सभी Assigned Values को Return करता है। इस Function में सभी Optional Parameters को By Reference Pass किया जाना होता है।
इस Function का प्रयोग करते हुए यदि हम पिछले PHP Code द्वारा Created subscribers.txt File के Content को Read करना चाहें, तो हमारा Program Code निम्नानुसार होगाः
<?php $title = "Registration"; include_once('header.php'); $handle = fopen("subscribers.txt", "r"); while ($userinfo = fscanf($handle, "%s%s%s%s")) { list ($name, $email, $username, $password) = $userinfo; echo $name . " " . $email . " " . $username . " " . $password . "<br>"; } fclose($handle); include_once('footer.php'); ?>
इस Code में हमने while Loop में fscanf() Function में केवल Format String को ही Specify किया है, उन Arguments को Specify नहीं किया है, जिसमें हमें File से Read होने वाले Results को Store करना है।
इसलिए ये fscanf() Function File से Data को Read करके उन Data का एक Array Return करता है, जिसे list() Function का प्रयोग करके हम अलग-अलग Variables में Store करते हैं।
यदि हम fscanf() Function से Array Return करवाना न चाहें, तो हम विभिन्न Arrays में fscanf() Function द्वारा Return होने वाले मानों को सीधे ही विभिन्न Variables में Store कर सकते हैं। इस तरह से fscanf() Function को Use करते हुए हम उपरोक्त Program को निम्नानुसार Modify कर सकते हैं:
<?php $title = "Registration"; include_once('header.php'); $handle = fopen("subscribers.txt", "r"); while (fscanf($handle, "%s%s%s%s", $name, $email, $username, $password)){ echo $name . " " . $email . " " . $username . " " . $password . "<br>"; } fclose($handle); include_once('footer.php'); ?>
इस PHP Code में fscanf() Function $handle से Associated File से एक बार में एक Line के Data को Read करता है और उस Data के विभिन्न हिस्सों को $name, $email, $username व $password नाम के Variables में Store कर देता है, जिन्हें हम अगले echo Statement में Display कर देते हैं अथवा अपनी जरूरत के अनुसार किसी अन्य उपयोग में ले लेते हैं।
file_put_contents() Function
ये Function fopen(), fwrite() व fclose() तीनों Functions का काम स्वयं ही कर लेता है। इस Function का प्रयोग करके हम किसी Content को किसी File में Write कर सकते हैं। इस Function का Syntax निम्नानुसार होता हैः
int file_put_contents(string $filename, mixed $data, int $flags=0, resource $context)
इस Function के First Argument के रूप में हमें उस File का नाम Specify करना होता है, जिसमें हम हमारे Contents को Write करना चाहते हैं। जब ये Function Run होता है, तब यदि पहले Argument के रूप में Specified File पहले से Disk पर Available हो, तो ये Function उस File के Content को Overwrite कर देता है।
लेकिन यदि File पहले से Available न हो, तो ये Function पहले Argument में Specified नाम की File को Create करता है और उस File में Content को Write करने के बाद File को Close भी कर देता है।
दूसरे Argument के रूप में हम उस Data को Specify करते हैं, जिसे हम पहले Argument में Specified File में Store करना चाहते हैं। ये Data कोई String, Array या Stream Resource हो सकता है।
यदि Data कोई Stream Resource जैसे कि कोई Webpage हो, तो उस Stream का Remaining Buffer पहले Argument में Specified File में Copy हो जाता है जो कि stream_copy_to_stream() के समान है।
हम इस दूसरे Parameter में Single Dimensional Array को भी Specify कर सकते हैं, जो कि file_put_contents($filename, implode(‘’,$array)) के समान होता है।
तीसरे Parameter के रूप में हम निम्न में से किसी एक या एक से ज्यादा Flage को OR Operator का प्रयोग करते हुए Specify कर सकते हैं:
FILE_USE_INCLUDE_PATH
इस मान को Specify करने पर PHP पहले Argument में Specified File को Create करने से पहले include_path पर भी Search करता है।
FILE_APPEND
इस मान को Specify करने पर पहले Argument में Specified File यदि Disk पर पहले से मौजूद हो, तो नया Content उस पहले से मौजूद File में Append हो जाता है। यानी इस Flag Specify करने पर ये Function File को Overwrite नहीं करता।
LOCK_EX
इस मान को Specify करने पर PHP पहले Argument में Specified File पर एक Exclusive Lock Place करने के बाद उसमें Data Writing करना शुरू करता है। जिससे यदि समान समय पर एक से ज्यादा लोग समान File को Modify करना चाहें, तो न कर सकें।
ये Function Successful होने पर File में Write होने वाले कुल Bytes की संख्या Return करता है, जबकि Fail होने पर False Return करता है।
file_get_contents() Function
ये Function file() Function की तरह ही काम करता है। अन्तर केवल ये है कि ये Function File के Contents को एक String की तरह Return करता है और हमें File से जो Content Read करना होता है, उसे इस Function के चौथे व पांचवें Parameter में Specified Integer मानों द्वारा तय किया जाता है।
string file_get_contents(string $filename, bool $use_include_path=false, resource $context, int $offset= -1, int $maxlen)
यदि हम इस Function में हमें First Argument के रूप में उस File का नाम Specify करना होता है, जिसे हम Read करना चाहते हैं। यदि हम केवल एक ही Parameter Specify करते हैं, तो ये Function पूरी File के Content को Read करके एक String के रूप में Return कर देता है।
यदि हम दूसरे Parameter में True Specify करते हैं, तो PHP पहले Argument में Specified File को include_path पर भी Search करता है।
यदि हम Selected Contents को ही Read करना चाहते हैं, तो चौथे Parameter में उस Byte का Number Specify करते हैं, जहां से हम Reading शुरू करना चाहते हैं और पांचवें Parameter में Read किए जाने वाले अधिकतम Bytes की संख्या को Specify करते हैं।
यदि ये Function Successfully Run होता है, तो File से Read किए गए Data को String के रूप में Return करता है जबकि Fail होने की स्थिति में ये Function False Return करता है।
यदि पांचवें Parameter में Specified Numerical Value 0 से कम हो या चौथे Parameter में Specified Offset Value, पांचवें Parameter की Length Value की Range से ज्यादा हो, तो ये Function एक E_WARNING Level का Error Return करता है।
<?php $file = 'names.txt'; $person = "John Smith\n"; file_put_contents($file, $person, FILE_APPEND | LOCK_EX); echo file_get_contents($file) ?>
इस PHP Code को Execute करने पर names.txt नाम की एक File Current Folder में Create होती है और इस File में file_put_contents() Function द्वारा एक String को Write किया जाता है।
चूंकि इस PHP Code में हमने $file को तीसरे Parameter में FILE_APPEND Flag के साथ Open किया है, इसलिए हम जब भी इस PHP Code वाली File को Run करते हैं, इस names.txt File के अन्त में नया नाम Append होता रहता है।
इस File के Contents को फिर से Read करने के लिए हमने file_get_contents() Function को Call किया है और इसमें केवल एक ही Parameter Specify किया है, जो कि names.txt File का नाम है।
इसलिए ये Function file_put_contents() Function द्वारा Create होने वाली File के सारे Contents को ज्यों का त्यों Output में Render कर देता है। जब हम इस Program को Eclipse IDE में Create करके Run करते हैं, तो ये Program व उसका Output हमें निम्नानुसार दिखाई देता हैः
![Formatted File Writing and Reading in PHP - Hindi](https://www.bccfalna.com/ebooks/wp-content/uploads/ebooks/2015/12/Formatted-File-Writing-and-Reading-in-PHP-Hindi-1-580x313.png)
इस Function में Specify किए गए पांच Parameter में से यदि हम कुछ Optional Parameters को Specify न करना चाहें, तो हमें उन Parameters के स्थानों पर NULL Specify करना होता है। जैसेः
<?php //Read 10 characters starting from the 5th character $section = file_get_contents('names.txt', NULL, NULL, 5, 10); var_dump($section); ?>
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF