Я пытаюсь найти файл PHP для строки, и когда эта строка будет найдена, я хочу вернуть всю LINE, что строка включена. Вот мой примерный код. Я думаю, что мне придется использовать взрыв, но не могу понять это.
$searchterm = $_GET['q']; $homepage = file_get_contents('forms.php'); if(strpos($homepage, "$searchterm") !== false) { echo "FOUND"; //OUTPUT THE LINE }else{ echo "NOTFOUND"; }
Просто прочитайте весь файл как массив строк, используя функцию file
.
function getLineWithString($fileName, $str) { $lines = file($fileName); foreach ($lines as $lineNumber => $line) { if (strpos($line, $str) !== false) { return $line; } } return -1; }
Если вы используете file
а не file_get_contents
вы можете file_get_contents
строку строки за строкой, ища текст, а затем возвращать этот элемент массива.
Документация по файлу PHP
Вы хотите использовать функцию fgets, чтобы вытащить отдельную строку, а затем выполнить поиск
<?PHP $searchterm = $_GET['q']; $file_pointer = fopen('forms.php'); while ( ($homepage = fgets($file_pointer)) !== false) { if(strpos($homepage, $searchterm) !== false) { echo "FOUND"; //OUTPUT THE LINE }else{ echo "NOTFOUND"; } } fclose($file_pointer)
Вы можете использовать функцию fgets()
чтобы получить номер строки.
Что-то вроде :
$handle = fopen("forms.php", "r"); $found = false; if ($handle) { $linecount = 0; while (($buffer = fgets($handle, 4096)) !== false) { if (strpos($buffer, "$searchterm") !== false) { echo "Found on line " . $countline + 1 . "\n"; $found = true; } $countline++; } if (!$found) echo "$searchterm not found\n"; fclose($handle); }
Если вы все еще хотите использовать file_get_contents()
, выполните следующее:
$homepage = file_get_contents("forms.php"); $exploded_page = explode("\n", $homepage); $found = false; for ($i = 0; $i < sizeof($exploded_page); ++$i) { if (strpos($buffer, "$searchterm") !== false) { echo "Found on line " . $countline + 1 . "\n"; $found = true; } } if (!$found) echo "$searchterm not found\n";
Вот ответ на вопрос об использовании регулярных выражений для вашей задачи.
Получить номер строки из preg_match_all ()
Поиск файла и возврат указанных номеров строк.