如果从用户那里获得输入,我想在文件中搜索任何结果,并显示结果:
$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显示文本文件中的行
答案 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。