正则表达式提取特定字符串之间的行

时间:2013-11-28 12:38:38

标签: php regex

我需要提取两个特定字符串之间的行。 例如:

---Title---
Header 1: 

Sample text. Multiple lines

Header 2: 

Sample Text

在这里,我需要提取Header 1:&之间的所有行。 Header 2:。 我尝试了/^Header 1:(?s)(.*)Header 2:/i

2 个答案:

答案 0 :(得分:0)

您可以使用爆炸功能http://us3.php.net/manual/en/function.explode.php

在没有正则表达式的情况下执行此操作

示例:

$str = "---Title---
Header 1: 

Sample text. Multiple lines

Header 2: 

Sample Text";

$str=explode("Header 1:", $str)[1];
$str=explode("Header 2:", $str)[0];
echo $str;

答案 1 :(得分:0)

如果你想使用正则表达式,你需要使用正确的正则表达式修饰符:

  • m:PCRE_MULTILINE
  • s:PCRE_DOTALL

请参阅此处的文档:

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

<?php

$str = file_get_contents('sample.txt');
echo $str;

if (preg_match('/Header 1:\s*(.*)Header 2:/msi', $str, $matches))
{
    var_dump($matches[1]);
}