3

我需要获取的输出$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
4

1 回答 1

0

问题很简单。Explode 不使用正则表达式。这应该适合你。

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);
于 2012-12-04T00:54:14.407 回答