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