В PHP, если я найду слово в файле, могу ли я преобразовать строку, из которой это слово, в строку $string?

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

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

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


person Graham    schedule 16.04.2011    source источник


Ответы (4)


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

Что-то типа:

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

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

person Sean Adkinson    schedule 16.04.2011

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

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

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

person Ry-♦    schedule 16.04.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() для больших файлов, вероятно, не очень хорошо)

person Phoenix    schedule 16.04.2011

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

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

Объяснение:

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