1

大きなリスト ファイルから単語を検索したい。

次に、その単語が見つかった場合、その単語が見つかったリスト ファイルの行全体を取得しますか?

これまでのところ、これを行うPHP文字列関数は見たことがありません

4

4 に答える 4

1

preg_match を使用できます。

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

$arrその後、一致が含まれます。

于 2011-04-16T02:06:55.553 に答える
1
$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);

単語が出現する 1 行だけを見つけたい場合は、それを配列に保存する代わりに、どこかに保存しbreak、一致した直後に保存します。

これは、あらゆるサイズのファイルですばやく動作するはずです (大きなファイルで file() を使用するのはおそらく適切ではありません)。

于 2011-04-16T02:30:41.193 に答える
1

行区切りの正規表現を使用して単語を検索すると、一致に行全体が含まれます。

何かのようなもの:

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

次に$matches、見つかった場所の完全な行が表示されますWORD

于 2011-04-16T02:05:44.473 に答える
0

これを試してください:

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

説明:

  • file()はファイルを読み取り、行の配列を生成します
  • preg_grep()は、一致するパターンが見つかった配列要素を返します
  • $result結果の配列です。
于 2011-04-16T02:15:09.753 に答える