在CSV文件中搜索一个字符串,将包含该字符串的所有行输出为表PHP


Search a string in a CSV file , output all the lines which contain it as table - PHP

这些天我对PHP的编码和学习还很陌生。在对这个问题进行了近一周的研究之后,我几乎放弃了对这个问题的研究。希望能从专家那里得到一些好的见解。

问题:-我有一个CSV文件,其中包含有关服务器的信息。例如:

ClientId,ProductName,Server,ServerRole,Webserver,DatabaseName
001,abc,Server1,Web,Webserver1,,
001,abc,Server2,Dabatase,,Database1
001,abc,Server3,Application,,,
002,abc,Server4,Web,Webserver2,,
002,abc,Server5,Database,,Database2,

我创建了一个HTML页面,它有一个简单的HTML表单,它以服务器名称作为输入,并调用在名为"search.php"的页面中编写的命令。我能够将用户输入从索引表单保存到变量fine。但这才是真正的问题。我想根据这个CSV文件搜索该变量,找到与该服务器相关的客户端名称(第1列)(应该与第3列匹配),然后打印该客户端的所有行。例如,如果我输入"Server3",我应该以表格形式获得前三行作为输出

我使用过fgetcsv(),fgets()等,但我似乎没有破解这个。到目前为止,我最接近的是打印所有包含输入文本的行(这也不是以表格形式)。如果能帮我解决问题,我们将不胜感激。

这是我到目前为止的代码:

<?php
 $name = $_POST["search"]; 
 echo "You have searched for the server <b>$name</b>";
$output = "";
 $fp = fopen("D:'VMware'DSRM'Servers'Servers.csv", "r");
    // Read file
 $txt = fgets($fp);
 while ( !feof( $fp ) ) {
      // Search for keyword
      if ( stripos( $txt, $name ) !== false ) {
      $output .= $txt.'<br />';
      }
      $txt = fgets($fp);
 }
echo $output;
?> 

regex怎么样?

$input_lines = file_get_contents("theCSV");
$server = "Server3";
preg_match_all("/('d+).*(".$server.")(.*)/", $input_lines, $clientid);
preg_match_all("/(". $clientid[1] .".*)/", $input_lines, $output_array);
Var_dump(output_array[1]);

理论上这应该有效:-)