0

問題が発生しています。私がやりたいのは、入力されたものが見つかるまでPHPコードに検索を実行させることです。たとえば、「12」という番号を検索したとします。以下のようなファイルに入れて、「12」が含まれている行を見つけてください。

Dark Green = 11 = No = 20,
Light Blue = 12 = No = 20,
Lime Green = 13 = No = 20,
Sensei Gray = 14 = Yes = 0,

その場合、この行には12が含まれます。

Light Blue = 12 = No = 20,

次に、行が見つかった後にコードに実行させたいのは、左側の「=」記号の前にあるテキストを読み取ることです。この場合、コードに次のように読み取らせます。

Light Blue

私はいつもこれをやりたいと思っていました、そしてどんな助けでも大いに感謝されるでしょう!

4

5 に答える 5

1

以下のコードを試してください

$string = 'Dark Green = 11 = No = 20,
Light Blue = 12 = No = 20,
Lime Green = 13 = No = 20,
Sensei Gray = 14 = Yes = 0';


$string = explode(',',$string);
foreach($string as $row)
{
    preg_match('/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/', trim($row), $matches);
    echo $matches[1];//Dark Green
    echo $matches[2];//11
    echo $matches[3];//No
    echo $matches[4];//20
}

ループ内で、検索する単語を確認するために使用します

そのように

if($matches[1] == 'Dark Green')
{
   echo $matches[1];
}

また

   if($matches[2] == 11)
    {
       echo $matches[2];
    }

(...) ファイル内のテキストを取得するには、使用してみてください

    $string = file_get_contents('file.txt');
于 2012-06-08T19:14:33.173 に答える
0

これはpreg_grepとexplodeの混合です。

$arr = explode("\n", file_get_contents('file.txt'));
$matches = preg_grep('/12/', $arr);

一致は$matches配列にあります。

于 2012-06-08T18:59:19.877 に答える
0

大まかに言えば、php fgets コマンドを使用して、任意のテキスト ファイルを 1 行ずつ処理できます。次に、上記のように爆発を使用して各行で操作を実行し、文字列を見つけて出力できます。

于 2012-06-08T18:58:58.393 に答える
0

このようなことを試してください

$lines = explode("\n",$filetext);
$searchString = preg_quote('12','/');
foreach($lines as $line) {
    preg_match("/([^=])\s*=\s*$searchString/");
    if($matches[1]) {
         print $matches[1]; 
         break;
    }
}

$filetext には、 fgets を使用して行ごとに読み取るテキストが含まれています (その後、展開する必要はありません)、または file_get_contents を使用してさらに単純化します

于 2012-06-08T18:58:58.733 に答える
0

これを使って:

$data = file("file.txt");
$num = 12;
foreach((array)$data as $key=>$line) {
   if (strstr($line,"= $num ") || strstr($line," = $num,")) {
      echo $line;
      break;
   }
}
于 2012-06-08T19:30:14.677 に答える