我使用preg_match在文本文件中查找某个单词。但是,我想定义preg_match开始搜索的起始行。如何使preg_match忽略前5行? 另外,我有一个代码会自动从文件中删除preg_matched单词,因此我不确定“从关键字开始”是否适用。
下面是使用的代码。
$contents = file_get_contents($file);
$pattern = preg_quote($searchfor, '/');
$pattern = "/\b$pattern\b/m";
if(preg_match_all($pattern, $contents, $matches))
答案 0 :(得分:2)
使用
添加图案前缀^((.*)\n){5}\K
应该丢弃任何搜索的前5行,请参阅下面的演示
https://regex101.com/r/wFqazl/2
您的代码将如下所示
$contents = file_get_contents($file);
$pattern = preg_quote($searchfor, '/');
$pattern = "/^((.*)\n){5}\K\b$pattern\b/m";
if(preg_match_all($pattern, $contents, $matches))
答案 1 :(得分:0)
我会这样,就像@JustOnUnderMillions建议
$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
答案 2 :(得分:0)