PHP中的多行正则表达式问题

时间:2010-08-08 11:11:54

标签: php regex

考虑下面的代码,为什么它不起作用?

<?php

$str = "
<h4>
   title
</h4>
";

$result = preg_match_all ('/<h4>([\d\D])<\/h4>/mi', $str, $matches);
var_dump($matches);

1 个答案:

答案 0 :(得分:2)

你可能意味着

$str = "
<h4>
   title
</h4>
";

$result = preg_match_all ('/<h4>(.+?)<\/h4>/si', $str, $matches);
var_dump($matches);

您应用的正则表达式'/<h4>([\d\D])<\/h4>/mi'表示“匹配一个开头h4,一个字符,这是一个数字或不是数字,以及结束h4。”但是你有很多字符要匹配,所以你需要指定一个量词(“多于一个”,+)。 更新:你需要一个非贪婪的量词,+?,如果你有一个以上的h4(非常可能!)并且类[\d\D]可以简化为“任何角色“,.。还有一点:您需要使用/s代替/m来获得所需的行为。

这可能包括你的比赛中的新线!