PHP REGEX preg_match_all在特定行之后的每一行

时间:2011-04-04 23:26:43

标签: php regex preg-match-all

以下是带有我的正则表达式和代码的示例字符串:

$str = "Supp Fees:
----------
Oral Glucose
Glucagon
OXYGEN";

$ptn = "/----------(?:\r\n(.+))+/m";
preg_match_all($ptn,$str,$matches);

echo"<pre>";
print_r($matches);
echo"</pre>";

我试图在“----------”之后匹配每一行,上面的模式只返回第一行(口服葡萄糖)。我可以重复'\ r \ n(。+)'部分并返回另一行,但不知道会有多少行。

谢谢!

2 个答案:

答案 0 :(得分:2)

你可以在没有正则表达式的情况下做到这一点:

$data = substr($str, strpos($str, '----------') + 10);
$matches = explode("\r\n", $data);

答案 1 :(得分:1)

<?php

$str = "Supp Fees:
----------
Oral Glucose
Glucagon
OXYGEN";


$str = explode('----------', $str);
preg_match_all("/[^\r\n].*/", $str[1], $matches);

echo"<pre>";
print_r($matches);
echo"</pre>";

?>