2017-04-06 6 views
2

Im preg_matchを使用して、テキストファイル内の特定の単語を検索します。しかし、preg_matchが検索を開始する開始行を定義したいと思います。 preg_matchで最初の5行を無視するにはどうすればよいですか? さらに、私はpreg_matched単語をファイルから自動的に削除するコードを持っていますので、ここから "start from keyword"が使えます。PHPでpreg_matchの開始行を定義するにはどうすればよいですか?

コードを使用しています。

$contents = file_get_contents($file); 
$pattern = preg_quote($searchfor, '/'); 
$pattern = "/\b$pattern\b/m"; 
if(preg_match_all($pattern, $contents, $matches)) 
+0

'ファイル()'その後、(最初の5 lines_ _ignore)インデックス5であなたの正規表現のものを行う、1つのエントリとして各行を配列で取得するために使用するより良いです。 – JustOnUnderMillions

答えて

1

を示唆したように、私は、任意の検索の最初の5行を破棄しなければならない、この道を行くだろう

以下のデモを参照してください。

https://regex101.com/r/wFqazl/2

あなたが最初の5行を無視したい場合はあなたのコードは、それを行う必要があります

"/^(?:.*?\n){5,5}[^\n]/" 

この

$contents = file_get_contents($file); 
$pattern = preg_quote($searchfor, '/'); 
$pattern = "/^((.*)\n){5}\K\b$pattern\b/m"; 
if(preg_match_all($pattern, $contents, $matches)) 
+0

ありがとうございます!これは私の問題を解決しました。 –

0

@JustOnUnderMillionsが

^((.*)\n){5}\K 

であなたのパターンを前置

$input = file($file); 
$output = array_slice($input, 5); // cut off first 5 lines 
$output = implode("\n", $output); // join left lines into one string 

// do your preg_* functions on output 
関連する問題