PHP脚本搜索CSV文本文件 [英] PHP script searches CSV text file

查看:174
本文介绍了PHP脚本搜索CSV文本文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用这个PHP脚本来搜索由Christian Heilmann的CSV文本文件。但目前,没有结果,当你第一次来到网站,直到你做一个搜索。如何使其显示标准数据列表,直到用户搜索基本数据。

I am using this PHP script to search for CSV text file by Christian Heilmann. But currently, there is no result when you first come to the site, until you do a search. How do I make it show standard data list til user search for basic data.

function csvtoservice($url,$options){
  $csv = get($url);
  $lines = preg_split('/\r?\n/msi',$csv);
  $columns = split(',',
              strtoLower(
                preg_replace('/\s/','',$lines[0])
              )
            );
  $colstring = join(',',$columns);

  if($options['preset']){
    $pres = $options['preset'];
    foreach(array_keys($pres) as $p){
      $presetstring .= ' and '.$p.' like "%'.$pres[$p].'%"'; 
    }
    $columns = array_diff($columns,array_keys($pres));
  }

  if($options['filter']){
    $columns = array_diff($columns,$options['filter']);
  }

  if($options['prefill']){
    foreach(array_keys($options['prefill']) as $p){
      if(!isset($_GET[$p])){
        $_GET[$p] = $options['prefill'][$p];
      }
    }
  }

  if($options['rename']){
    $renames = array_keys($options['rename']); 
    foreach($columns as $k=>$c){
      foreach($renames as $r){
        if(!in_array($c,$renames)){
          $displaycolumns[$k] = $c;
        } else {
          if($c == $r){
            $displaycolumns[$k] = $options['rename'][$r];
          }
        }
      }
    }
  } else {
    $displaycolumns = $columns;
  }

  foreach($columns as $c){
    filter_input(INPUT_GET, $c, FILTER_SANITIZE_SPECIAL_CHARS);    
    $fromget[$c] = $_GET[$c];
  }

  $current = preg_replace('/.*\/+/','',"#section4",$_SERVER['PHP_SELF']);

  $csvform = '<form action="'.$current.'">';
  foreach($columns as $k=>$c){
    $csvform .= '<div><label for="'.$c.'">'.
                ($options['uppercase'] ? 
                  ucfirst($displaycolumns[$k]) :
                  $displaycolumns[$k]).
                '</label></br>'.
                '<input type="text" id="'.$c.'" name="'.$c.
                '" value="'.$fromget[$c].'"></div>';
  }
  $csvform .= '<div id="bar"><input type="submit" name="csvsend"'.
              ' value="search"></div>';
  $csvform .= '</form>';

  if(isset($_GET['csvsend'])){
    $yql = 'select * from csv where url="'.$url.'" '.
           'and columns="'.$colstring.'"';
    foreach($columns as $c){
      if(isset($_GET[$c]) && $_GET[$c]!=''){
        $yql .= ' and '.$c.' like "%'.$_GET[$c].'%"';
      }
    }
    $yql .= $presetstring;
    $yqlquery = '<div id="yql">'.$yql.'</div>';

    $yqlendpoint = 'http://query.yahooapis.com/v1/public/yql?format=json';
    $query = $yqlendpoint.'&q='.urlencode($yql);
    $data = get($query);
    $datadecoded = json_decode($data);

    $csvtable = '<table><thead><tr>';
    foreach($columns as $k=>$c){
      $csvtable .= '<th scope="col">'.
                    ($options['uppercase'] ? 
                      ucfirst($displaycolumns[$k]) :
                      $displaycolumns[$k]).
                    '</th>';
    }
    $csvtable .= '</tr></thead><tbody>';
    if($datadecoded->query->results->row){

    foreach ($datadecoded->query->results->row as $r){
      $csvtable .= '<tr>';
      foreach($columns as $c){
        $csvtable .= '<td>'.$r->$c.'</td>';
      }
      $csvtable .= '</tr>';
    }
  } else {
    $csvtable .=  '<tr><td class="error" colspan="'.sizeof($columns).
                  '">No results found.</td></tr>';
  }
    $csvtable .=  '</tbody></table>';
  }
  return array(
                'table'=>$csvtable,
                'form'=>$csvform,
                'query'=>$yqlquery,
                'json'=>$data
              );
}

function get($url){
  $ch = curl_init(); 
  curl_setopt($ch, CURLOPT_URL, $url); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  $output = curl_exec($ch); 
  curl_close($ch);
  return $output;
}


推荐答案

value如果没有通过表单传递的搜索项?

why not to set a default value if there is no search term passed by the form?

这篇关于PHP脚本搜索CSV文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆