<!--:en-->Motodays 2014, 6.-9. of March<!--:--><!--:it-->Motodays 2014, 6-9 Marzo<!--:-->
这是我要匹配的字符串。我想匹配2个类似HTML的注释标签中的内容。
因此,我尝试:<!--:(..)-->(.+)<!--:-->
和此正则表达式的其他一些派生类,但是找不到返回预期结果的解决方案。我也试过
(|)
检查是否存在2个这样的标签,但结果不可靠,因为它还需要管理3个或更多匹配项。
这是preg_match
的结果:
array(
0 => <!--:en-->Motodays 2014, 6.-9. of March<!--:--><!--:it-->Motodays 2014, 6-9 Marzo<!--:-->
1 => en
2 => Motodays 2014, 6.-9. of March<!--:--><!--:it-->Motodays 2014, 6-9 Marzo
)
这是我想要实现的:
array(
0 => <!--:en-->Motodays 2014, 6.-9. of March<!--:--><!--:it-->Motodays 2014, 6-9 Marzo<!--:-->
1 => en
2 => Motodays 2014, 6.-9. of March
3 => it
4 => Motodays 2014, 6-9 Marzo
)
编辑:
答案建议使用preg_match_all();
生成的数组有些不同,但是形式比另一个数组更实用。
array(
0=>array(
0=><!--:en-->Motodays 2014, 6.-9. of March<!--:-->
1=><!--:it-->Motodays 2014, 6-9 Marzo<!--:-->
)
1=>array(
0=>en
1=>it
)
2=>array(
0=>Motodays 2014, 6.-9. of March
1=>Motodays 2014, 6-9 Marzo
)
)
答案 0 :(得分:1)
(.+)
是贪婪的,直到最后一场比赛。我建议添加一个?
以使其不贪心。我也会使用preg_match_all
。
我认为:
<!--:([a-z]{2})-->(.*?)<!--:-->
将实现您想要的。