Intereting Posts
Массив с ассоциативным массивом – удаление дубликатов Лучший способ получить доступ к Exchange с помощью PHP? Установка mikehaertl-phpwkhtmltopdf на xampp – для чайников Кнопка загрузки PHP не работает Создание пустого файла PHP – Как объединить массивы внутри массива определить, содержит ли строка один из набора слов в массиве PHP / MySQL: вставьте данные в проблему набора символов базы данных Как отсортировать результаты полнотекстового поиска MYSQL по релевантности Разрешить сеансам php переносить на поддомены PHP echoing jpeg image терпит неудачу, но запись того же изображения в файл отлично работает. Зачем? PHP вычитает значения массива Список библиотек не используется в удаленном соединении PHP DB2 с IBM i Можно ли создавать статические переменные во время выполнения в PHP? Как захватить содержимое Facebook Note с помощью Graph API? Функция Javascript в PHP fromCharCode ()

Поиск строк и строк возврата PHP

Я пытаюсь найти файл 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 ()

    Поиск файла и возврат указанных номеров строк.