考虑下面的代码,为什么它不起作用?
<?php
$str = "
<h4>
title
</h4>
";
$result = preg_match_all ('/<h4>([\d\D])<\/h4>/mi', $str, $matches);
var_dump($matches);
答案 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
来获得所需的行为。
这可能包括你的比赛中的新线!