2010-12-27 9 views
55

मैं fgetcsv फ़ंक्शन के साथ php का उपयोग कर एक सीएसवी फ़ाइल पार्स कर रहा था। इसने सभी सामग्री को एक पंक्ति में पार्स किया, बाद में मैंने पाया, सीएसवी में "\ r" के रूप में कैरिज रिटर्न शामिल है। मैंने देखा - यह पहले php बग के रूप में रिपोर्ट किया गया था। मैंने इसे php रनटाइम कॉन्फ़िगरेशन सेट करके हल किया है -fgetcsv मैक स्वरूपित सीएसवी फ़ाइल में लाइन समाप्त करने में विफल रहता है, कोई बेहतर समाधान?

ini_set("auto_detect_line_endings", "1"); 

क्या कोई और समाधान है या यह सही तरीका है?

धन्यवाद

+1

के साथ लाइन अंत सामान्य यह काम करता है? (15 वर्ण) – marcog

+0

हाँ, यह मेरे लिए काम करता सकते हैं – Musa

+0

ताकि आप सवाल बंद कर सकते हैं आप यहाँ अपने खुद के सवाल का जवाब चाहिए। –

उत्तर

29

auto_detect_line_endings स्थापना स्पष्ट php documentation द्वारा सिफारिश की है।

हालांकि, मैं यह नहीं समझ सकता कि आप 2010 में \r के साथ लाइनों को सीमित क्यों करना चाहते हैं। यदि संभव हो, तो उन्हें यूनिक्स-शैली \n में परिवर्तित करें।

+6

मेरे क्लाइंट ने मुझे एक फाइल दी जिसमें \ r। मैंने उनसे पूछा कि वह किस ओएस संस्करण का उपयोग करता है, उन्होंने कहा कि वह तेंदुए और कार्यालय 2008 का उपयोग करता है। मैं उनके लिए एक प्लगइन बना रहा हूं जहां कई अंतिम उपयोगकर्ता होंगे, इसलिए मैं इस क्रॉस प्लेटफॉर्म को बनाने की कोशिश कर रहा हूं। – Musa

+1

मेरे मामले में, उपयोगकर्ता एमएस ऑफिस एक्सेल 2011 का उपयोग कर मैक ओएस (10.9, मावेरिक) पर था। – marcovtwout

+0

मेरे मामले में यह विंडोज 7 पर एक्सेल 2013 था। – JaseC

5

\r सीएसवी फ़ाइल के रूप में सहेजते समय लाइन अंतराल माइक्रोसॉफ्ट एक्सेल द्वारा बनाए जाते हैं, इसलिए यदि आप Excel स्प्रेडशीट से शुरुआत कर रहे हैं तो इसके आसपास बहुत कुछ नहीं हो रहा है।

का उपयोग auto_detect_line_endings ठीक काम करता है, या आप preg_replace('/\r\n|\n\r|\n|\r/', '\n', $subject);

संबंधित मुद्दे