PHP kullanarak bir CSV dosyası oluşturun (ve upload) nasıl

5 Cevap php

Örneğin, ben CSV göstermek istediğiniz tüm verileri içeren bir değişken "$ foo" var:

$foo = "some value,another value,last value";

: Amacım için

  1. Içerikleri $ foo eşittir "some.csv" adlı bir CSV dosyası oluşturun

  2. Benim sunucuya "some.csv" yükleyin.

Bu nasıl yapılabilir?

Update: Here's the exact code that worked for me.

$foo = "some value,another value,last value";
$file = 'some_data.csv';
file_put_contents($file, $foo);

5 Cevap

Sayı 1:

file_put_contents("foobar.csv", $yourString);

Sayı 2:

$c = curl_init("http://"...);  
curl_setopt($c, CURLOPT_POSTFIELDS, array('somefile' => "@foobar.csv"));
$result = curl_exec($c);
curl_close($c);
print_r($result);

dosya önce @ not

Eğer zaten kullanabileceğiniz tüm verileri ile değişken varsa file_put_contents bir csv olarak kaydetmek için

PHP kullanarak CSV dosyası yükleme (Working Code)

Sorgu Kütüphane

<?php 
class query{

function mysql_query_string($string){
    $enabled = true;
    $htmlspecialchars = false; # Convert special characters to HTML entities 
    /****************************************************************
    The translations performed are: 

    '&' (ampersand) becomes '&amp;' 
    '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set. 
    ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set. 
    '<' (less than) becomes '&lt;' 
    '>' (greater than) becomes '&gt;' 

    *****************************************************************/

    if($htmlspecialchars){
    # Convert special characters to HTML entities 
    $string = htmlspecialchars($string, ENT_QUOTES);
    }
    else{
    /****************************************************************
    '"' (double quote) becomes '&quot;' 
    ''' (single quote) becomes '&#039;' 
    ****************************************************************/
    //$string = str_replace('"',"&quot;",$string);
    //$string = str_replace("'","&#039;",$string);
    }

    if($enabled and gettype($string) == "string"){
        # Escapes special characters in a string for use in a SQL statement
        return mysql_real_escape_string(trim($string));
    }
    elseif($enabled and gettype($string) == "array"){
    $ary_to_return = array();
    foreach($string as $str){
        $ary_to_return[]=mysql_real_escape_string(trim($str));
    }
        return $ary_to_return;
    }
    else{
        return trim($string);
    }
   }
 }
 ?>

Csv yöntem çağrısı

 public function csvFileSubmitData(){

    $this->load->library('query');
    $query=new query();
    $root = DIR_PATH.'public/administrator/csv/';

    $fileToUpload= (isset($_FILES['fileToUpload']) and $_FILES['fileToUpload']['size'] > 0 and
    $_FILES['fileToUpload']['error'] == 0) ? $_FILES['fileToUpload'] : "";

       if(is_array($fileToUpload)){ # CHECK UPLOADED FILE 1 FOR VALIDATION
            $fileToUpload['name'] = str_replace(" ","_",$fileToUpload['name']);
            $fileToUpload['name'] = str_replace("&","and",$fileToUpload['name']);
            # CHECK FILE TYPE IF IT IS IMAGE JPG,GIF,PNG ETC
            $fnarr = explode(".", $fileToUpload['name']);
        }   

    $rand = rand(1000,10000);
    $filecsv = $rand."_".$fileToUpload['name'];
    $file1  =   $root.$filecsv;
    move_uploaded_file($fileToUpload['tmp_name'],$file1);

    $fieldseparator = ",";
    $lineseparator = "\n";
    $csvfile = $file1;
    $addauto = 0;
    $save = 0;
    $outputfile = "output.sql";
    if(!file_exists($csvfile)) {
        echo "File not found. Make sure you specified the correct path.\n";
        exit;
    } 
   $file = fopen($csvfile,"r");

    if(!$file) {
        echo "Error opening data file.\n";
        exit;
    }

    $size = filesize($csvfile);

    if(!$size) {
        echo "File is empty.\n";
        exit;
    }

    $csvcontent = fread($file,$size);

    fclose($file);

    $lines = 1;
    $queries = "";
    $linearray = array();
    $values = "";
    $m =0;
    $linestext = split($lineseparator,$csvcontent);

    foreach($linestext as $line){
    if($m++==0){
      continue;
    }

    $lines++;
    $line = trim($line," \t");
    if($line  == ''){
      break;
    }
    $linearray = explode($fieldseparator,$line);

    $topicname = $linearray[0];
    $question = $linearray[1];
    $answer1 = $linearray[2];

    if(isset($linearray[1]) and $linearray[1] != ''){

                $topicname = $query->mysql_query_string($linearray[0]);
                $question = $query->mysql_query_string($linearray[1]);
                $answer_type = $query->mysql_query_string($linearray[2]);
    }
    //Save Csv data in your table like this
    //query(insert into topics SET `topic`='".$topicname."',`question`='".$question."');
  }}

Eğer CodeIgnitor Framework kullanıyorsanız bu nedenle bu kodu da bu kod düz PHP kullanmak gibi olabilir, hiçbir sert ve hızlı kural entegre etmek çok kolay .....

Thanx AbdulSamad

CSV oluşturmak için bunu döngü sonra, bir diziye dize kırmak gerekir. Bundan sonra web sunucusu hesap sunucu üzerinde erişimi olan herhangi bir dizine dosya kaydedebilirsiniz. İşte bir örnek ...

//variables for the CSV file
$directory = '/sampledir/';
$file = 'samplefile.csv';
$filepath = $directory.$file;

//open the file
$fp = fopen("$filepath",'w+');

//create the array
$foo = "some value,another value,last value";
$arrFoo = explode(',',$foo);

//loop through the array and write to the file
$buffer = '';
foreach($arrFoo AS $value) {
   $buffer .= $value."\r\n";
} 
fwrite($fp,$buffer);

//close the file
fclose($fp);

Dosyanız artık $file ayarlanan dosya ile $directory ayarlanan dizine yazılır.

-Justin