मैं fputcsv()
का उपयोग कर सीएसवी आउटपुट को संभालने के लिए एक फ़ंक्शन लिख रहा हूं। मैंने डरावने \r\n
मुद्दे के आसपास काम किया है कि बहुत से लोगों के पास fputcsv()
(कोड देखें) के साथ है।एक CSV फ़ाइल बनाते समय, मैं फ़ील्ड में n और r वर्णों को कैसे संभालूं?
अब मैं कैसे \r
या \n
अक्षर है कि एक क्षेत्र में शामिल किए गए हैं (नहीं लाइन खत्म होने वाली रिटर्न \r\n
) को संभालने के लिए यह पता लगाने की कोशिश कर रहा हूँ। fputcsv()
में पारित होने से पहले इसे किसी तरह से बच जाना चाहिए?
फ़ंक्शन अधिकांश पात्रों के लिए अच्छी तरह से भागने से संभालता है। लेकिन, जब \n
किसी फ़ील्ड में डाला जाता है, तो एमएस एक्सेल और Google डॉक्स दोनों में \n
के साथ समस्याएं होती हैं और CSV ठीक से लोड करने में विफल रहता है।
/*
* Revised Get CSV Line using PHP's fputcsv()
*
* Used to correct an issue with fputcsv()
* http://stackoverflow.com/questions/4080456/fputcsv-and-newline-codes
* MS Excel needs the MS Windows newline format of \r\n
*
*/
if (!function_exists('get_csv_line'))
{
function get_csv_line($list, $seperator = ",", $enclosure = '"', $newline = "\r\n")
{
$fp = fopen('php://temp', 'r+');
fputcsv($fp, $list, $seperator, $enclosure);
rewind($fp);
$line = fgets($fp);
if ($newline && $newline != "\n") {
if ($line[strlen($line)-2] != "\r" && $line[strlen($line)-1] == "\n") {
$line = substr_replace($line,"",-1) . $newline;
} else {
die('original csv line is already \r\n style');
}
}
if ($newline == "\r\n" && substr($line, -2) != "\r\n") {
log_message('error', 'function get_csv_line: Error, needs \r\n to be MS Excel friendly!');
}
return $line;
}
}
क्या मुझे बस जगह के साथ फ़ील्ड के भीतर \ n और \ r को प्रतिस्थापित करना चाहिए? – jjwdesign
संबंधित प्रश्न: [एक्सेल के लिए सीएसवी फ़ाइल जेनरेट करना, मूल्य के अंदर एक नई लाइन कैसे है?] (Http://stackoverflow.com/questions/1241220/generating-csv-file-for-excel-how-to-have- एक-न्यूलाइन-इन-ए-वैल्यू) – Anne
मैंने पहले इस तरह कुछ काम किया है, सीएसवी काम करने के लिए एक भयानक चीज है, आप अपने घेरे या अलगाव प्रतीक वाले क्षेत्रों जैसे समस्याओं का भी सामना कर सकते हैं। मैं उन प्रतीकों के लिए कुछ विदेशी भाषा वर्ण चुनने के लिए समाप्त होता हूं, और उन \ n \ r की जांच करने के लिए वास्तव में एक लंबी स्क्रिप्ट के माध्यम से चलाता हूं और सुनिश्चित करता हूं कि पर्याप्त संलग्नक और अलगाव वर्ण हैं। –