PHP-поиск и эхо-специфический текст

У меня проблемы. Я хочу сделать, чтобы мой 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 

Я всегда хотел это сделать, и любая помощь была бы высоко оценена!

Попробуйте код ниже

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

В широком смысле вы можете использовать команду php fgets для обработки любого текстового файла по строкам. Затем вы можете запустить операцию в каждой строке, используя взрыв, как было предложено выше, чтобы найти строку и распечатать ее.

Попробуйте что-то вроде этого

 $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

Вот смесь preg_grep и взорваться.

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

Ваши совпадения будут в массиве $ matches;

использовать это:

 $data = file("file.txt"); $num = 12; foreach((array)$data as $key=>$line) { if (strstr($line,"= $num ") || strstr($line," = $num,")) { echo $line; break; } }