2016-05-12 67 views
1

我是新来的编码和学习PHP这个世界。对于这个问题的近一周的研究,我几乎已经放弃了这个问题。希望能从专家那里得到一些很好的见解。在CSV文件中搜索一个字符串,输出包含它的所有行作为表格 - 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形式,这需要服务器名称作为输入,并调用写在一个被称为“的search.php”页面内的命令的HTML页面。我能够将用户输入从索引表单保存到变量罚款。但这是真正的问题。我想根据这个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; 
?> 
+0

容易导入CSV工作数据库,因为你whant在PHP创建数据库。 – Naumov

回答

0

什么正则表达式?

$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]); 

理论上这应该:-)

+0

谢谢安德烈亚斯, 但最终用户只知道服务器名称,所以他只会输入服务器名称。在servername的基础上,我必须找出客户端ID,然后打印客户端ID的所有行。 – Dev

+0

啊..好吧,不明白。抱歉。我会看看我能做些什么。 – Andreas

+0

@Dev试试我的更新 – Andreas

相关问题