कॉमा सेपरेटेड वैल्यूज़ (CSV) फ़ाइलें सारणीबद्ध डेटा संग्रहीत करने के लिए एक सामान्य प्रारूप हैं। ये सरल, मानव-पठनीय हैं, और PHP सहित कई प्रोग्रामिंग भाषाओं द्वारा आसानी से संसाधित की जा सकती हैं। यह लेख PHP में CSV फ़ाइलों को पार्स करने के कई तरीकों का पता लगाता है, प्रत्येक की अपनी ताकत और कमजोरियाँ हैं।
विषयवस्तु की तालिका
- CSV फ़ाइलों को समझना
- विधि 1:
fopen
औरfgetcsv
का उपयोग करना - विधि 2:
SplFileObject
का उपयोग करना - विधि 3:
str_getcsv
का उपयोग करना - त्रुटि संचालन और सर्वोत्तम अभ्यास
- उन्नत परिदृश्य: सीमांकक और संलग्नक
- निष्कर्ष
CSV फ़ाइलों को समझना
एक CSV फ़ाइल डेटा को पंक्तियों और स्तंभों में व्यवस्थित करती है, जिन्हें कॉमा द्वारा अलग किया जाता है। प्रत्येक पंक्ति एक रिकॉर्ड का प्रतिनिधित्व करती है, और एक पंक्ति के भीतर प्रत्येक कॉमा-सेपरेटेड मान एक फ़ील्ड का प्रतिनिधित्व करता है। जबकि कॉमा मानक हैं, अन्य सीमांकक (अर्धविराम, टैब) और फ़ील्ड संलग्नक (अक्सर दोहरे उद्धरण चिह्न) संभव हैं। इन्हें समझना सही पार्सिंग के लिए महत्वपूर्ण है।
नाम,आयु,शहर
जॉन डो,30,न्यू यॉर्क
जेन डो,25,लंदन
विधि 1: fopen
और fgetcsv
का उपयोग करना
यह एक बुनियादी, व्यापक रूप से उपयोग किया जाने वाला तरीका है। fopen
फ़ाइल खोलता है, और fgetcsv
प्रत्येक पंक्ति को एक सरणी में पढ़ता और पार्स करता है।
<?php
$file = 'data.csv';
$handle = fopen($file, 'r');
if ($handle) {
while (($data = fgetcsv($handle, 1000, ',')) !== false) {
//प्रत्येक $data सरणी (पंक्ति) को संसाधित करें
echo "नाम: " . $data[0] . ", आयु: " . $data[1] . ", शहर: " . $data[2] . "
";
}
fclose($handle);
} else {
die("फ़ाइल खोलने में त्रुटि: " . $file);
}
?>
fgetcsv
में 1000
अधिकतम पंक्ति लंबाई निर्धारित करता है। हमेशा संभावित त्रुटियों (जैसे, फ़ाइल नहीं मिली) को संभालें।
विधि 2: SplFileObject
का उपयोग करना
SplFileObject
बेहतर नियंत्रण और पठनीयता प्रदान करते हुए, एक अधिक ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण प्रदान करता है।
setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
//प्रत्येक $row सरणी (पंक्ति) को संसाधित करें
echo "नाम: " . $row[0] . ", आयु: " . $row[1] . ", शहर: " . $row[2] . "
";
}
?>
setFlags
CSV पार्सिंग को सरल करता है, जिससे कोड साफ-सुथरा हो जाता है।
विधि 3: str_getcsv
का उपयोग करना
पहले से ही एक स्ट्रिंग में मौजूद CSV डेटा के लिए, str_getcsv
इसे सीधे एक सरणी में पार्स करता है।
<?php
$csvString = "नाम,आयु,शहरnजॉन डो,30,न्यू यॉर्कnजेन डो,25,लंदन";
$rows = array_map('str_getcsv', explode("n", $csvString));
foreach ($rows as $row) {
//प्रत्येक $row सरणी (पंक्ति) को संसाधित करें
echo "नाम: " . $row[0] . ", आयु: " . $row[1] . ", शहर: " . $row[2] . "
";
}
?>
यह फ़ाइल हैंडलिंग से बचाता है, जब CSV पहले से ही एक स्ट्रिंग है तो उपयुक्त है।
त्रुटि संचालन और सर्वोत्तम अभ्यास
हमेशा मजबूत त्रुटि संचालन शामिल करें। फ़ाइल के अस्तित्व की जाँच करें, संभावित अपवादों को संभालें, और पार्सिंग के बाद अपने डेटा को सत्यापित करें। अधिक संरचित त्रुटि संचालन के लिए try-catch ब्लॉक का उपयोग करने पर विचार करें।
उन्नत परिदृश्य: सीमांकक और संलग्नक
CSV फ़ाइलें विभिन्न सीमांकक (जैसे, अर्धविराम, टैब) और संलग्नक (आमतौर पर दोहरे उद्धरण चिह्न) का उपयोग कर सकती हैं। fgetcsv
और str_getcsv
आपको इन्हें निर्दिष्ट करने की अनुमति देते हैं:
// fgetcsv और str_getcsv के लिए:
$data = fgetcsv($handle, 1000, ';', '"'); //अर्धविराम सीमांकक, दोहरा उद्धरण चिह्न संलग्नक
SplFileObject
जटिल CSV संरचनाओं को संभालने के लिए अधिक उन्नत विकल्प प्रदान करता है। बहुत जटिल परिदृश्यों के लिए, किसी समर्पित CSV पार्सिंग लाइब्रेरी का उपयोग करने पर विचार करें।
निष्कर्ष
PHP CSV डेटा को पार्स करने के लचीले तरीके प्रदान करता है। सबसे अच्छी विधि आपकी आवश्यकताओं और आपकी CSV फ़ाइलों की जटिलता पर निर्भर करती है। वह दृष्टिकोण चुनें जो सरलता, दक्षता और त्रुटि संचालन के बीच सर्वोत्तम संतुलन प्रदान करता है।