2012-07-09 14 views
27

पर एक नई पंक्ति जोड़ें यदि मेरे पास सर्वर पर एक CSV सहेजा गया है, तो मैं नीचे दिए गए लाइन को लिखने के लिए PHP का उपयोग कैसे कर सकता हूं, 142,fred,elephants इसके नीचे से कहें?एक CSV फ़ाइल

+1

कहा जाता है कि * जोड़कर * जब आप किसी फ़ाइल को खोलने मोड देखते हैं, वहाँ फ़ाइल-सिस्टम कार्यों के साथ अक्सर जुड़ने के लिए खुला है। – hakre

उत्तर

68

ओपन जोड़कर के लिए CSV फ़ाइल (fopen­Docs):

fputcsv($handle, $line); # $line is an array of string values here 

फिर संभाल बंद (fclose­Docs):

fclose($handle); 

$handle = fopen("test.csv", "a"); 

फिर अपने लाइन (fputcsv­Docs) जोड़ने

मुझे आशा है कि यह सहायक होगा।

+3

@fvu: वास्तव में नहीं। '+' आवश्यक नहीं है, 'अकेले' फ़ाइल को भी बनाता है अगर यह मौजूद नहीं है। '+' समर्थन पढ़ने के लिए है। * "'A' \t केवल लेखन के लिए खोलें; फ़ाइल के अंत में फ़ाइल पॉइंटर रखें। अगर फ़ाइल मौजूद नहीं है, तो इसे बनाने का प्रयास करें।" * Http://de.php.net/manual/en /function.fopen.php – hakre

+4

@Dale: इस तरह से मतलब नहीं था। एक और अधिक मामूली अंतिम वाक्य जोड़ा गया है जिसे आसानी से बहुत गलत नहीं पढ़ा जा सकता है। यहां किसी भी तरह की भावनाओं को चोट पहुंचाना नहीं है। – hakre

+0

यदि आप शामिल हैं तो 'लाइन लाइन' को वास्तविक रेखा के बजाए तारों की सरणी होने की आवश्यकता होगी। – Overcode

8

आप कर सकते हैं एक फ़ाइल के लिए एक वस्तु उन्मुख इंटरफ़ेस वर्ग का उपयोग करें - SplFileObject http://php.net/manual/en/splfileobject.fputcsv.php (PHP 5> = 5.4.0)

$file = new SplFileObject('file.csv', 'a'); 
$file->fputcsv(array('aaa', 'bbb', 'ccc', 'dddd')); 
$file = null; 
0

आप मूल के शीर्ष लेख बनाए रखने के लिए प्रत्येक विभाजन फ़ाइल चाहते हैं;

$inputFile = './users.csv'; // the source file to split 
$outputFile = 'users_split'; // this will be appended with a number and .csv e.g. users_split1.csv 

$splitSize = 10; // how many rows per split file you want 

$in = fopen($inputFile, 'r'); 
$headers = fgets($in); // get the headers of the original file for insert into split files 
// No need to touch below this line.. 
    $rowCount = 0; 
    $fileCount = 1; 
    while (!feof($in)) { 
     if (($rowCount % $splitSize) == 0) { 
      if ($rowCount > 0) { 
       fclose($out); 
      } 
      $out = fopen($outputFile . $fileCount++ . '.csv', 'w'); 
      fputcsv($out, explode(',', $headers)); 
     } 
     $data = fgetcsv($in); 
     if ($data) 
      fputcsv($out, $data); 
     $rowCount++; 
    } 

    fclose($out); 
0

यह समाधान मेरे लिए काम करता है:: इस hakre के जवाब का संशोधित संस्करण है

<?php 
$list = array 
(
"Peter,Griffin,Oslo,Norway", 
"Glenn,Quagmire,Oslo,Norway", 
); 

$file = fopen("contacts.csv","w"); 

foreach ($list as $line) 
    { 
    fputcsv($file,explode(',',$line)); 
    } 

fclose($file); 
?> 

रेफरी: https://www.w3schools.com/php/func_filesystem_fputcsv.asp

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