代码之家  ›  专栏  ›  技术社区  ›  edt

如何使用PHP创建CSV文件(并上传)

  •  3
  • edt  · 技术社区  · 16 年前

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

    $foo = "some value,another value,last value";
    $file = 'some_data.csv';
    file_put_contents($file, $foo);
    
    5 回复  |  直到 16 年前
        1
  •  2
  •   Mike B    16 年前

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

    第二:

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

    注意文件名前的@

        2
  •  2
  •   user187291    16 年前

    fputcsv()

    file_put_contents()

    $foo = '...csv data...';
    $username = "myUser";
    $password = "myPassword";
    $url = "myserver.com/file.csv";
    $hostname= "ftp://$username:$password@$url";
    file_put_contents($hostname, $foo);
    
        3
  •  1
  •   Galen    16 年前

    如果您已经拥有包含所有可用数据的变量 file_put_contents

        4
  •  1
  •   Query Master Adrian Maire    14 年前

    工作代码

    <?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方法

     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."');
      }}
    

    如果你使用的是Codeignator框架,那么这段代码太容易集成了,没有硬性要求;快速规则你也可以用普通的PHP来使用这段代码。....

    Thanx 阿卜杜勒萨马德

        5
  •  0
  •   Timm    14 年前

    要创建CSV,您需要将字符串分解为数组,然后循环遍历。之后,您可以将文件保存到web服务器帐户在服务器上可以访问的任何目录中。这里有一个例子。..

    //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);
    

    您的文件现在将写入中设置的目录 $directory $file .

    -贾斯汀