PHP将每个段落分成数组

pba*_*auf 7 html php regex split

我想将每个段落分成一个数组.

我目前的做法不起作用:

$paragraphs = preg_split( '|</p>|', $text, PREG_SPLIT_OFFSET_CAPTURE );
Run Code Online (Sandbox Code Playgroud)

我怎么能得到这个:

$text = <<<TEXT
        <p>Hello!</p>
        <p style="border: 1px solid black;">How are you,<br /> today?</p>
TEXT;
Run Code Online (Sandbox Code Playgroud)

对此

$paragraphs = array(
     '<p>Hello!</p>',
     '<p style="border: 1px solid black;">How are you,<br /> today?</p>'
);
Run Code Online (Sandbox Code Playgroud)

Shi*_*jin 10

您可以使用DOMDocument(),如下所示

 <?php
$text = <<<TEXT
    <p>Hello!</p>
    <p style="border: 1px solid black;">How are you,<br /> today?</p>
TEXT;

$dom = new DOMDocument();
$paragraphs = array();
$dom->loadHTML($text);
foreach($dom->getElementsByTagName('p') as $node)
{

    $paragraphs[] = $dom->saveHTML($node);

}
print_r($paragraphs);
?>
Run Code Online (Sandbox Code Playgroud)

产量

Array
(
  [0] => <p>Hello!</p>
  [1] => <p style="border: 1px solid black;">How are you,<br> today?</p>
)
Run Code Online (Sandbox Code Playgroud)