1

1行の2つの値をテキストファイルで検索しようとしています。両方の値が存在する場合は、行全体を出力する必要があります。私が探している値は、私が行き詰まっている場所である互いに隣接していない可能性があります。私はうまく機能する次のコードを持っていますが、1つの検索値に対してのみです:

<?php 
$search = $_REQUEST["search"]; 
// Read from file 
$lines = file('archive.txt'); 
foreach($lines as $line) 
{ 
// Check if the line contains the string we're looking for, and print if it does 
if(strpos($line, $search) !== false) 
echo"<html><title>SEARCH RESULTS FOR: $search</title><font face='Arial'> $line <hr>"; 
} 

?>

どんな援助も大歓迎です。よろしくお願いします。

4

4 に答える 4

4

検索している値がスペースで区切られ、両方が常に存在すると仮定すると、次explodeのトリックを実行する必要があります。

$search = explode(' ', $_REQUEST["search"]);  // change ' ' to ',' if you separate the search terms with a comma, etc.
// Read from file 
$lines = file('archive.txt'); 
foreach($lines as $line) 
{ 
    // Check if the line contains the string we're looking for, and print if it does 
    if(strpos($line, $search[0]) !== false && strpos($line, $search[1] !== false)) { 
        echo"<html><title>SEARCH RESULTS FOR: $search</title><font face='Arial'> $line <hr>";
    }
} 

$search配列に常に2つの要素があることを確認するための検証を追加するのは、あなたに任せます。

于 2012-11-09T01:16:43.917 に答える
3

HTMLコードも修正しました。スクリプトは2つの値とを探し$searchます$search2stristr()を使用しています。stristrの大文字と小文字を区別するバージョンについては、strstr ()を参照してください。スクリプトは、との両方$searchを含むすべての行を返します$search2

<?php 
$search = $_REQUEST["search"]; 
$search2 = $_REQUEST['search2'];
// Read from file 
$lines = file('archive.txt'); 
echo"<html><head><title>SEARCH RESULTS FOR: $search</title></head><body>";
foreach($lines as $line) 
{ 
// Check if the line contains the string we're looking for, and print if it does 
if(stristr($line,$search) && stristr($line,$search2))  // case insensitive
    echo "<font face='Arial'> $line </font><hr>"; 
} 
?>
</body></html>
于 2012-11-09T01:15:10.103 に答える
1

他の値も検索し、&&を使用して両方を確認してください。

      <?php 
        $search1 = $_REQUEST["search1"];
         $search2 = $_REQUEST["search2"];
        // Read from file 
         $lines = file('archive.txt'); 
        foreach($lines as $line) 
        { 
           // Check if the line contains the string we're looking for, and print if it does 
          if(strpos($line, $search1) !== false && strpos($line, $search2) !== false) 
             echo"<html><title>SEARCH RESULTS FOR: $search1 and $search2</title><font face='Arial'> $line <hr>"; 
        } 

       ?>
于 2012-11-09T01:17:27.927 に答える
0

これは私のために働いた。searchthis arayで好きなものを定義すると、行全体で表示されます。

<?php
$searchthis = array('1','2','3');
$matches = array();

$handle = fopen("file_path", "r");
if ($handle)
{
while (!feof($handle))
{
    $buffer = fgets($handle);

    foreach ($searchthis as $param) {
    if(strpos($buffer, $param) !== FALSE)
        $matches[] = $buffer;
 }}
 fclose($handle);
 }

 foreach ($matches as $parts) {
echo $parts;
}
?>
于 2017-12-08T15:18:47.373 に答える