首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP使用正则表达式循环和查询mysql以输出excel文件

问PHP使用正则表达式循环和查询mysql以输出excel文件
EN

Stack Overflow用户
提问于 2012-11-01 03:55:22
回答 1查看 302关注 0票数 2

我到底做错了什么。我希望我们首先得到的数组被转置。然后正则表达式分解其中一列,因此我们可以查询数据库中的另一个表,将该列标题替换为正确的标题。正则表达式是否正确?转置是正确的吗?

这将获得我们想要的查询

代码语言:javascript
复制
exportMysqlToCsv($tablename,$tokenmain, $id);
function exportMysqlToCsv($tablename,$tokenmain, $id, $filename = 'Results.csv'){
      $sql_query = "select * from $tablename where $tokenmain";

// Gets the data from the database

$result = mysql_query($sql_query);


$f = fopen('php://temp', 'wt');
$first = true;

$temp = mysql_fetch_array($result);

我希望这能颠倒我们刚刚得到的数组。在这里不确定

代码语言:javascript
复制
array_unshift($temp, null);
$transposed_array = call_user_func_array('array_map', $temp);

然后,我们循环转置数组并替换我们收到的列标题(例如。111X2222X3333),并将它们拆分,以查询我们想要替换它们的标头,并将其输出到excel文件。这就是我非常困惑的地方。

代码语言:javascript
复制
for ($i = 0; $i < $count; $i++) {
if ($transposed_array[$i][0])//starts with a number
{
    $sid = regexp /^[0-9]*/

    $gid = regexp /X[0-9]*X/
    //remove first and last character from $gid
    $gid = str_replace("X", "", $gid)

    $qid = regexp /[0-9]*$/

    $question_text = mysql_query("select question from lime_questions where sid =           ".$sid." and gid = ".$gid." and qid = ".$qid." limit 1");
    $transposed_array[$i][5] = $question_test
}

这应该会将数组输出到csv文件

代码语言:javascript
复制
while ($row = mysql_fetch_assoc($result))
{
         if ($first)
     {
            fputcsv($f, array_keys($row));
            $first = false;
     }
fputcsv($f, $row);

} // end while

//恢复正常处理

代码语言:javascript
复制
$size = ftell($f);
rewind($f);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: $size");

//以适当的mime类型输出到浏览器,由用户选择;)

代码语言:javascript
复制
header("Content-type: text/x-csv");
header("Content-type: text/csv");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");

fpassthru($f);

exit;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-01 04:29:11

不确定您要实现什么,因为下面的表达式不是有效的PHP表达式

代码语言:javascript
复制
  $sid = regexp /^[0-9]*/
  $gid = regexp /X[0-9]*X/
  $qid = regexp /[0-9]*$/

但是从你的评论来看

我想让这个循环把我们从第一个数组中得到的列标题分开。列标题的一个示例是111X222X3333。我想使用正则表达式将它们分开,这样每一个都有自己的属性,比如sid =111、gid=222和qid=3333

你所需要的是

代码语言:javascript
复制
$string = "111X222X3333" ;
list($sid,$gid,$qid) = explode("X", $string);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13166492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档