В PHP, если я найду слово в файле, могу ли я сделать строку, из которой пришло слово, в строку $ - PullRequest
1 голос
/ 16 апреля 2011

Я хочу найти слово в большом файле списка.

Затем, если и когда это слово будет найдено, взять всю строку файла списка, в котором слово было найдено?

До сих пор я не видел ни одной строковой функции PHP для этого

Ответы [ 4 ]

1 голос
/ 16 апреля 2011
$path = "/path/to/wordlist.txt";
$word = "Word";

$handle = fopen($path,'r');
$currentline = 1;  //in case you want to know which line you got it from
while(!feof($handle))
{
    $line = fgets($handle);
    if(strpos($line,$word))
    {
        $lines[$currentline] = $line;
    }
    $currentline++;
}
fclose($handle);

Если вы хотите найти только одну строку, где встречается слово, то вместо сохранения его в массиве сохраните его где-нибудь и просто break после сопоставления.

Этодолжен быстро работать с файлами любого размера (использование file () для больших файлов, вероятно, не очень хорошо)

1 голос
/ 16 апреля 2011

Вы можете использовать preg_match:

$arr = array();
preg_match("/^.*yourSearch.*$/", $fileContents, $arr);

$arr будет содержать совпадения.

1 голос
/ 16 апреля 2011

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

Что-то вроде:

preg_match('^.*WORD.*$, $filecontents, $matches);

Тогда $matches будет иметь полные строки найденных мест WORD

0 голосов
/ 16 апреля 2011

Попробуйте это:

$searhString = "search";
$result = preg_grep("/^.*{$searhString}.*$/", file('/path/to/your/file.txt'));
print_r($result);

Объяснение:

  • file () прочитает ваш файл и выдаст массив строк
  • preg_grep () вернет элемент массива, в котором найден соответствующий шаблон
  • $result - результирующий массив.
...