我需要获取$one
的输出并创建一个数组,然而,正则表达式是不正确的,因为我得到的只是一个带有一个键和一个值的数组;基本上,整个字符串。如果字符串中有10个段落标记,那么我应该在数组中获得10个值。
我的正则表达式出了什么问题?
理想情况下,我希望在输出数组中有两个数组,一个包含段落标记,另一个只包含它们之间的文本。
$one = preg_replace( '/<p>/i', '<p class="test">', $str ); // This gives me what I need
print_r(explode( '/<p class="test">/iU', $one )); // This does not
答案 0 :(得分:0)
问题很简单。爆炸不使用正则表达式。这应该适合你。
print_r(explode('<p class="test">', $one ));
编辑:这应该做你想要的。
$pattern = '/(?P<open><p class="test">)'
. '(?P<content>.*)'
. '(?P<close><\/p>)/i';
preg_match_all($pattern, $one, $matches);
print_r($matches);
编辑:没有匹配标记的简化版本:
$pattern = '/(<p class="test">)(.*)(<\/p>)/i';
preg_match_all($pattern, $one, $matches);
print_r($matches);