Как создать файл CSV с помощью PHP (и загрузить его)

Например, у меня есть переменная «$ foo», которая включает все данные, которые я хочу показать в CSV:

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

Моя цель:

  1. Создайте CSV-файл с именем «some.csv», содержимое которого равно $ foo

  2. Загрузите «some.csv» на мой сервер.

Как это может быть сделано?

Обновление: Вот точный код, который работал для меня.

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

Номер 1:

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

Номер 2:

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

обратите внимание на @ перед именем файла

См. Fputcsv ()

Если $ foo уже отформатирован csv. Вы можете использовать file_put_contents()

Вы не указываете метод загрузки. Вот пример использования ftp (UNSECURE):

 $foo = '...csv data...'; $username = "myUser"; $password = "myPassword"; $url = "myserver.com/file.csv"; $hostname= "ftp://$username:$password@$url"; file_put_contents($hostname, $foo); 

Если у вас уже есть переменная со всеми данными, вы можете использовать file_put_contents, чтобы сохранить ее как csv

Как загрузить CSV-файл с помощью PHP ( рабочий код )

Библиотека запросов

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

Если вы используете Codeignitor Framework, поэтому этот код слишком легко интегрировать, нет жесткого и быстрого правила, вы также можете использовать этот код простой PHP, а также …..

Thanx AbdulSamad

Чтобы создать CSV, вам нужно разбить свою строку на массив, а затем прокрутить ее. После этого вы можете сохранить файл в любом каталоге, на который имеет доступ учетная запись веб-сервера на вашем сервере. Вот пример …

 //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 .

-Джастин