![](/img/trans.png)
[英]How to create downloadable csv file from a javascript object consisting of array?
[英]How to create a .csv file from the results of an array?
我正在使用PHP類實時檢查電子郵件的有效性,PHP腳本運行良好:檢查電子郵件並將結果打印在同一頁上,為每個經過驗證的電子郵件創建一個<td>
元素。
我的問題是我要驗證200,000封電子郵件...腳本的結果是一個龐大的列表,導致我的瀏覽器停止工作。
是否可以使用結果創建.csv文件,而不是僅將其打印在頁面上? 如果是這樣,我該怎么做?
這是我的源代碼:
index.php <-這是顯示結果的文件。 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; } ?>
我嘗試按照@jason的答案給出的說明進行操作,現在可以將生成的電子郵件保存在CSV文件中...但是csv文件包含重復的信息,並且index.php的標題打印為列。
這是我的代碼:
<?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; } ?>
這是生成的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
在此問題上的任何幫助將不勝感激。 謝謝。
要從數組創建CSV行,請使用$csv_line = implode(',',$array_line);
將其吐出到具有CSV擴展名和中提琴的文件中!
另外,如果我看到了您正在使用的數組的print_r()
示例(即是否需要任何循環等),則可以給出更深入的答案。
您可能會擁有最大執行量,以阻止其超時。
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
此代碼將生成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);
?>
這是您需要的:
$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.