搜索文本文件,并显示结果?

时间:2010-11-04 13:01:36

标签: php html search text-search

如果从用户那里获得输入,我想在文件中搜索任何结果,并显示结果:

$searchValue = $_POST['search'];

$handle = @fopen("home.txt","r");
# read line by line
while (($buffer = fgets($handle, 4096)) !== false && // the condtion for the $searchValue) {
    echo '<tr>';
        $array = explode(',', $buffer);
    foreach($array as $val){
         echo '<td>'.$val.'</td>';      
        } 
    echo '</tr>';       
}

我得到了我必须做的事情,我只想用相关的$ searchvalues显示文本文件中的行

2 个答案:

答案 0 :(得分:1)

我甚至建议使用文件命令:

array file  ( string $filename  [, int $flags = 0  [, resource $context  ]] )

将每行读入一个文件作为数组中的元素。从那里,你将迭代每一行(你提到返回匹配的文件中的行,这就是我推荐文件(...)的原因):

if (($fileLines = file('home.txt')) !== false)
{
  foreach ($fileLines as $line)
  {
    if (strpos($line, $searchVal) !== false)
    { // match found
      echo '<tr><td>'.str_replace(',','</td><td>',trim($line)).'</td></tr>';
    }
  }
}

没有使用爆炸阵列只是为了再次重新加入它。您也可以将其爆炸,然后使用&lt; / td&gt;&lt; td&gt;进行内爆()。同样。

此外,您的文件似乎包含多行CSV。如果是这种情况,您可能希望迭代每一行,然后爆炸(...)项目并在爆炸变量上执行in_array(...)(或使用strpos迭代部分匹配)。 e.g:

$values = explode(',',$line);
// array search (while entries)
if (in_array($searchVal,$values)) { ... }
// array search with partial matches
foreach ($values as $val) {
  if (strpos($val,$searchVal) !== false) { ... }
}

答案 1 :(得分:0)

您正在寻找的是strpos()

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

返回haystack字符串中第一次出现针的数字位置。

以整数形式返回位置。如果未找到needle,strpos()将返回布尔值FALSE。