2013-11-28 2 views
0

Мне нужно извлечь строки между двумя конкретными строками. Пример:Регулярное выражение для извлечения строк между конкретными строками

---Title--- 
Header 1: 

Sample text. Multiple lines 

Header 2: 

Sample Text 

Здесь мне нужно, чтобы извлечь все строки между Header 1: & Header 2:. Я пробовал с /^Header 1:(?s)(.*)Header 2:/i.

+2

Так что случилось? –

ответ

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; 
0

Если вы хотите использовать регулярное выражение для этого, вам нужно использовать правильные модификаторы регулярных выражений :

  • м: PCRE_MULTILINE
  • с: 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]); 
} 
Смежные вопросы