如何在PHP中定义preg_match的起始行?

时间:2017-04-06 14:06:29

标签: php preg-match-all

我使用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))

3 个答案:

答案 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)

如果你想忽略前5行,那么

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

应该这样做。

https://regex101.com/r/TEBTYt/1