[英]How to create a .csv file from the results of an array?
I'm using a PHP class to Check the email validity in real-time, The PHP Script works fine: Check the emails and print the results in the same page creating a <td>
element for each validated email. 我正在使用PHP类实时检查电子邮件的有效性,PHP脚本运行良好:检查电子邮件并将结果打印在同一页上,为每个经过验证的电子邮件创建一个<td>
元素。
My problem is I'm trying to validate around 200,000 emails... the result of the script is a huge list causing my browser to stop working. 我的问题是我要验证200,000封电子邮件...脚本的结果是一个庞大的列表,导致我的浏览器停止工作。
Is it possible to create a .csv file with the results instead of just print them on the page? 是否可以使用结果创建.csv文件,而不是仅将其打印在页面上? If so, how can I do this? 如果是这样,我该怎么做?
Here is my source code: 这是我的源代码:
index.php <-- this is the file that shows the results. index.php <-这是显示结果的文件。 emailvalid.php <-- This is the PHP Class emailvalid.php <-这是PHP类
<!DOCTYPE html> <!--[if IE 8]> <html lang="en" class="ie8"> <![endif]--> <!--[if IE 9]> <html lang="en" class="ie9"> <![endif]--> <!--[if !IE]><!--> <html lang="en"> <!--<![endif]--> <head> <title>EmailValid</title> <!-- Meta --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> <link rel="shortcut icon" href="favicon.ico"> <link href='http://fonts.googleapis.com/css?family=Lato:300,400,300italic,400italic' rel='stylesheet' type='text/css'> <link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'> <!-- Global CSS --> <link rel="stylesheet" href="assets/plugins/bootstrap/css/bootstrap.min.css"> <!-- Plugins CSS --> <link rel="stylesheet" href="assets/plugins/font-awesome/css/font-awesome.css"> <link rel="stylesheet" href="assets/plugins/prism/prism.css"> <!-- Theme CSS --> <link id="theme-style" rel="stylesheet" href="assets/css/styles.css"> <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body data-spy="scroll"> <!---//Facebook button code--> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <!-- ******PROMO****** --> <section id="promo" class="promo section offset-header"> <div class="container text-center"> <h2 class="title">Email<span class="highlight">Valid</span></h2> <p class="intro">Check the email validity in real-time <form method="post"> <textarea rows="10" cols="150" style="color:black" name="email" placeholder="Insert here your text. The robot will extract all the emails from the text"></textarea> </p> <div class="btns"> <input type="submit" value="Check" name="Check" class="btn btn-cta-secondary"> </div> </form> <?php include 'assets/emailvalid.php'; ?> <ul class="meta list-inline"> </ul><!--//meta--> </div><!--//container--> </section><!--//promo--> <!-- Javascript --> <script type="text/javascript" src="assets/plugins/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="assets/plugins/jquery-migrate-1.2.1.min.js"></script> <script type="text/javascript" src="assets/plugins/jquery.easing.1.3.js"></script> <script type="text/javascript" src="assets/plugins/bootstrap/js/bootstrap.min.js"></script> <script type="text/javascript" src="assets/plugins/jquery-scrollTo/jquery.scrollTo.min.js"></script> <script type="text/javascript" src="assets/plugins/prism/prism.js"></script> <script type="text/javascript" src="assets/js/main.js"></script> </body> </html>
<?php $show_details ='yes'; // choice : 'yes' or 'no' $disposable_email ='yes'; // choice : 'yes' or 'no' $check_mx ='yes'; // choice : 'yes' or 'no' if(!empty($_POST['Check'])){ if(!empty($_POST['email'])){ $emails = get_email($_POST['email']); require_once('emailvalidclass.php'); //include emailvalidclass.php file $emailChecker = new emailChecker; // Make a new instance if($show_details=='yes'){ $emailChecker->supress_output = 0; }else{ $emailChecker->supress_output = 1; } if($disposable_email=='yes'){ $emailChecker->filter_dea = 1; }else{ $emailChecker->filter_dea = 0; } if($check_mx=='yes'){ $emailChecker->check_mx = 1; }else{ $emailChecker->check_mx = 0; } $emailChecker->smtp_test = 0; $emailsubmited=count($emails); echo '<br><b>Emails : </b>'.$emailsubmited; echo '<hr><table cellpadding="10" cellspacing="10" border="1" style="margin-top: 15px;"> <tr style="font-size:20px;background-color:black;color:white"> <td>Email</td> <td>Passed</td>'; if($show_details=='yes'){ echo '<td style="text-align:left">Email valid ?</td>'; if($disposable_email=='yes'){ echo '<td>Disposable ?</td>'; } if($check_mx=='yes'){ echo '<td>Domain MX Check ?</td>'; } } echo ' </tr>'; $array_good_emails=array(); $array_bad_emails=array(); $array_good_no_duplicate_emails=array(); foreach((array)$emails as $key=>$e){ if(empty($e)) continue; $e = $emailChecker->check($e); $e = $e['result']; // echo '<pre>'; // print_r($e); // echo '</pre>'; if($e['success']){ $array_good_emails[]=htmlspecialchars($e['query']); }else{ $array_bad_emails[]=htmlspecialchars($e['query']); } ?> <tr> <td><?php echo htmlspecialchars($e['query']); ?></td> <?php if($e['success']){ echo '<td style="background-color:green">yes</td>'; }else{ echo '<td style="background-color:red">no</td>'; } ?> <td> <?php if(!empty($e['report']['validate_email'])){ echo 'yes'; }elseif(!empty($e['errors']['validate_email'])){ echo 'no'; } ?> </td> <?php if($show_details=='yes'){ ?> <?php if($disposable_email=='yes'){ ?> <td> <?php if(!empty($e['report']['filter_dea'])){ echo 'no'; }elseif(!empty($e['errors']['filter_dea'])){ echo 'yes'; }else{ echo '-'; } ?> </td> <?php } ?> <?php if($check_mx=='yes'){ ?> <?php if(!empty($e['report']['check_mx'])){ echo '<td>yes</td>'; }elseif(!empty($e['errors']['check_mx'])){ echo '<td>no</td>'; }else{ echo '<td>-</td>'; } ?> <?php } ?> <?php } ?> </tr> <?php } echo '</table><br><br>'; ?> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">Show Passed/Good Emails</a> </h4> </div> <div id="collapseTwo" class="panel-collapse in" style="height: auto;"> <div class="panel-body" style="color:black"> <?php echo implode("<br>",$array_good_emails); ?> </div> </div> </div> <div class="panel panel-default"> <div class="panel-heading"> <h6 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" class="collapsed">Show Bad Emails</a> </h6> </div> <div id="collapseOne" class="panel-collapse collapse" style="height: 0px;"> <div class="panel-body" style="color:black"> <?php echo implode("<br>",$array_bad_emails); ?> </div> </div> </div> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapseFour" class="collapsed">Show Passed/Good Emails (without duplicate emails) </a> </h4> </div> <div id="collapseFour" class="panel-collapse collapse"> <div class="panel-body" style="color:black"> <?php $array_good_no_duplicate_emails=array_unique($array_good_emails); echo implode("<br>",$array_good_no_duplicate_emails); ?> </div> </div> </div> <?php }else{ echo 'Email field empty. Please, try again'; } } function get_email($text) { ## Regex taken from http://bit.ly/Tq2PYP PHP's FILTER_VALIDATE_EMAIL function. $email_pattern = "/(?!(?:(?:\\\\x22?\\\\x5C[\\\\x00-\\\\x7E]\\\\x22?)|(?:\\\\x22?[^\\\\x5C\\\\x22]\\\\x22?)){255,})(?!(?:(?:\\\\x22?\\\\x5C[\\\\x00-\\\\x7E]\\\\x22?)|(?:\\\\x22?[^\\\\x5C\\\\x22]\\\\x22?)){65,}@)(?:(?:[\\\\x21\\\\x23-\\\\x27\\\\x2A\\\\x2B\\\\x2D\\\\x2F-\\\\x39\\\\x3D\\\\x3F\\\\x5E-\\\\x7E]+)|(?:\\\\x22(?:[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7F]|(?:\\\\x5C[\\\\x00-\\\\x7F]))*\\\\x22))(?:\\\\.(?:(?:[\\\\x21\\\\x23-\\\\x27\\\\x2A\\\\x2B\\\\x2D\\\\x2F-\\\\x39\\\\x3D\\\\x3F\\\\x5E-\\\\x7E]+)|(?:\\\\x22(?:[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7F]|(?:\\\\x5C[\\\\x00-\\\\x7F]))*\\\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\\\\.){1,126}){1,}(?:(?:[az][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\\\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\\\]))/i"; $raw = $text; $newlines = array("\\t","\\n","\\r","\\x20\\x20","\\0","\\x0B"); $content = str_replace($newlines, "----", html_entity_decode($raw)); $content2 = preg_replace("/\\s/", "-", $content); $content2 = preg_replace("/\\-+/", "|", $content2); $content2 = explode("|", $content2); $emails = array(); foreach( $content2 as $line) { preg_match("/@/", $line, $match); if( count($match) > 0 ) { preg_match_all($email_pattern, $line, $email_match); if( count($email_match) > 0 ) { foreach($email_match[0] as $key=>$email) { $emails[] = $email; } } } } return $emails; } ?>
I try to follow the instructions given on the answers from @jason and it works now the resulting emails are saved on a CSV file... but the csv file has repeated information and the headers from my index.php are printed as a columns. 我尝试按照@jason的答案给出的说明进行操作,现在可以将生成的电子邮件保存在CSV文件中...但是csv文件包含重复的信息,并且index.php的标题打印为列。
Here is my code: 这是我的代码:
<?php $show_details ='no'; // choice : 'yes' or 'no' $disposable_email ='no'; // choice : 'yes' or 'no' $check_mx ='no'; // choice : 'yes' or 'no' if(!empty($_POST['Check'])){ if(!empty($_POST['email'])){ $emails = get_email($_POST['email']); require_once('emailvalidclass.php'); //include emailvalidclass.php file $emailChecker = new emailChecker; // Make a new instance if($show_details=='yes'){ $emailChecker->supress_output = 0; }else{ $emailChecker->supress_output = 1; } if($disposable_email=='yes'){ $emailChecker->filter_dea = 1; }else{ $emailChecker->filter_dea = 0; } if($check_mx=='yes'){ $emailChecker->check_mx = 1; }else{ $emailChecker->check_mx = 0; } $emailChecker->smtp_test = 0; $emailsubmited=count($emails); $fileName = 'emails.csv'; header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header('Content-Description: File Transfer'); header("Content-type: text/csv"); header("Content-Disposition: attachment; filename={$fileName}"); header("Expires: 0"); header("Pragma: public"); $fh = @fopen( 'php://output', 'w' ); $headerDisplayed = false; $array_good_emails=array(); $array_bad_emails=array(); foreach((array)$emails as $key=>$e){ // Add a header row if it hasn't been added yet if(empty($e)) continue; $e = $emailChecker->check($e); $e = $e['result']; if($e['success']){ $array_good_emails[]=htmlspecialchars($e['query']); }else{ $array_bad_emails[]=htmlspecialchars($e['query']); } // Put the data into the stream fputcsv($fh, $array_good_emails); } // Close the file fclose($fh); // Make sure nothing else is sent, our file is done exit; } }else{ } function get_email($text) { ## Regex taken from http://bit.ly/Tq2PYP PHP's FILTER_VALIDATE_EMAIL function. $email_pattern = "/(?!(?:(?:\\\\x22?\\\\x5C[\\\\x00-\\\\x7E]\\\\x22?)|(?:\\\\x22?[^\\\\x5C\\\\x22]\\\\x22?)){255,})(?!(?:(?:\\\\x22?\\\\x5C[\\\\x00-\\\\x7E]\\\\x22?)|(?:\\\\x22?[^\\\\x5C\\\\x22]\\\\x22?)){65,}@)(?:(?:[\\\\x21\\\\x23-\\\\x27\\\\x2A\\\\x2B\\\\x2D\\\\x2F-\\\\x39\\\\x3D\\\\x3F\\\\x5E-\\\\x7E]+)|(?:\\\\x22(?:[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7F]|(?:\\\\x5C[\\\\x00-\\\\x7F]))*\\\\x22))(?:\\\\.(?:(?:[\\\\x21\\\\x23-\\\\x27\\\\x2A\\\\x2B\\\\x2D\\\\x2F-\\\\x39\\\\x3D\\\\x3F\\\\x5E-\\\\x7E]+)|(?:\\\\x22(?:[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7F]|(?:\\\\x5C[\\\\x00-\\\\x7F]))*\\\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\\\\.){1,126}){1,}(?:(?:[az][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\\\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\\\]))/i"; $raw = $text; $newlines = array("\\t","\\n","\\r","\\x20\\x20","\\0","\\x0B"); $content = str_replace($newlines, "----", html_entity_decode($raw)); $content2 = preg_replace("/\\s/", "-", $content); $content2 = preg_replace("/\\-+/", "|", $content2); $content2 = explode("|", $content2); $emails = array(); foreach( $content2 as $line) { preg_match("/@/", $line, $match); if( count($match) > 0 ) { preg_match_all($email_pattern, $line, $email_match); if( count($email_match) > 0 ) { foreach($email_match[0] as $key=>$email) { $emails[] = $email; } } } } return $emails; } ?>
And this is produced csv file: 这是生成的csv文件:
<!DOCTYPE html> <!--[if IE 8]> <html lang="en" class="ie8"> <![endif]--> <!--[if IE 9]> <html lang="en" class="ie9"> <![endif]--> <!--[if !IE]><!--> <html lang="en"> <!--<![endif]--> <head> <title>EmailValid</title> <!-- Meta --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> <link rel="shortcut icon" href="favicon.ico"> <link href='http://fonts.googleapis.com/css?family=Lato:300 400 300italic 400italic' rel='stylesheet' type='text/css'> <link href='http://fonts.googleapis.com/css?family=Montserrat:400 700' rel='stylesheet' type='text/css'> <!-- Global CSS --> <link rel="stylesheet" href="assets/plugins/bootstrap/css/bootstrap.min.css"> <!-- Plugins CSS --> <link rel="stylesheet" href="assets/plugins/font-awesome/css/font-awesome.css"> <link rel="stylesheet" href="assets/plugins/prism/prism.css"> <!-- Theme CSS --> <link id="theme-style" rel="stylesheet" href="assets/css/styles.css"> <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body data-spy="scroll"> 0 <!-- ******PROMO****** --> <section id="promo" class="promo section offset-header"> <div class="container text-center"> <h2 class="title">Email<span class="highlight">Valid</span></h2> <p class="intro">Check ZSBox email list validity in real-time <form method="post"> <textarea rows="10" cols="150" style="color:black" name="email" placeholder="Insert here your text. The robot will extract all the emails from the text"></textarea> </p> <div class="btns"> <input type="submit" value="Check" name="Check" class="btn btn-cta-secondary"> </div> </form> aksboneyard@sbcglobal.net aksboneyard@sbcglobal.net al__franco@sbcglobal.net aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com akula_6@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com akula_6@yahoo.com akurt79@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com akula_6@yahoo.com akurt79@yahoo.com al81g@hotmail.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com akula_6@yahoo.com akurt79@yahoo.com al81g@hotmail.com alaguvenkat@yahoo.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com akula_6@yahoo.com akurt79@yahoo.com al81g@hotmail.com alaguvenkat@yahoo.com al.jones@aig.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com akula_6@yahoo.com akurt79@yahoo.com al81g@hotmail.com alaguvenkat@yahoo.com al.jones@aig.com alagu6@hotmail.com aksboneyard@sbcglobal.net al__franco@sbcglobal.net aladydot@aol.com alabama_annie@yahoo.com alac471@yahoo.com akulovvpshark@yahoo.com akw408@yahoo.com aksingh@bnr.ca aksnownow@mytalk.com aktiva@c2i.net alaa_al_saeed@yahoo.com aks0355@aol.com alabamaalex@yahoo.com al77blackwolf7@email.com akula_6@yahoo.com akurt79@yahoo.com al81g@hotmail.com alaguvenkat@yahoo.com al.jones@aig.com alagu6@hotmail.com
Any help on this matter will be much appreciated. 在此问题上的任何帮助将不胜感激。 Thank you. 谢谢。
To create a CSV line from an array, use $csv_line = implode(',',$array_line);
要从数组创建CSV行,请使用$csv_line = implode(',',$array_line);
Spit that out to a file with CSV extension and viola! 将其吐出到具有CSV扩展名和中提琴的文件中!
Also, could give a more in depth answer if I saw a print_r()
example of the arrays you are working with(ie if any loops are needed, etc). 另外,如果我看到了您正在使用的数组的print_r()
示例(即是否需要任何循环等),则可以给出更深入的答案。
You will probably have up the max execution to stop it from timing out. 您可能会拥有最大执行量,以阻止其超时。
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
This code will generate the csv you'll have to modify it for your needs: 此代码将生成csv,您必须根据需要对其进行修改:
<?php
function query_to_csv($db_conn, $query, $filename, $attachment = false, $headers = true) {
if($attachment) {
// send response headers to the browser
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename);
$fp = fopen('php://output', 'w');
} else {
$fp = fopen($filename, 'w');
}
$result = mysql_query($query, $db_conn) or die( mysql_error( $db_conn ) );
if($headers) {
// output header row (if at least one row exists)
$row = mysql_fetch_assoc($result);
if($row) {
fputcsv($fp, array_keys($row));
// reset pointer back to beginning
mysql_data_seek($result, 0);
}
}
while($row = mysql_fetch_assoc($result)) {
fputcsv($fp, $row);
}
fclose($fp);
}
// Using the function
$sql = "SELECT * FROM table";
// $db_conn should be a valid db handle
// output as an attachment
query_to_csv($db_conn, $sql, "test.csv", true);
// output to file system
query_to_csv($db_conn, $sql, "test.csv", false);
?>
Here's what you need: 这是您需要的:
$fileName = 'emails.csv';
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$fileName}");
header("Expires: 0");
header("Pragma: public");
$fh = @fopen( 'php://output', 'w' );
$headerDisplayed = false;
foreach ( $your_emails_array as $data ) {
// Add a header row if it hasn't been added yet
if ( !$headerDisplayed ) {
// Use the keys from $data as the titles
fputcsv($fh, array_keys($data));
$headerDisplayed = true;
}
// Put the data into the stream
fputcsv($fh, $data);
}
// Close the file
fclose($fh);
// Make sure nothing else is sent, our file is done
exit;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.