从字符串函数中获取第二段

Get second paragraph from a string function

我有这样的字符串:

<p>Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt. Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt.</p>

<p><br />Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Nullam id dolor id nibh ultricies vehicula ut id elit.lor sit amet, consectetur adipiscing elit. Duis mollis, est non com.</p>

我知道怎样才能得到这样的第一段:

function getFirstParagraph($string){
    $string = substr($string,0, strpos($string, "</p>")+4);
    return $string;
}

但是我不知道如何得到第二段,有人可以帮我吗?

我会使用正则表达式。

function getParagraph($number, $string)
{
    $index = $number-1;

    $matches = [];

    if(!preg_match_all('#<p>(.*?)<\/p>#', $string, $matches))
        throw new Exception('No paragraphs found');

    $matches = $matches[1];
    if(!array_key_exists($index, $matches))
        throw new Exception("Only ".count($matches)." were found, you requested number {$number}");

    return $matches[$index];
}

function getFirstParagraph($string) //Legacy
{
    return getParagraph(1, $string);
}

只需使用 preg_match_all 使用下面的代码

<?php
 function getTextBetweenTags($string, $tagname)
 {
    $pattern = "/<$tagname>(.*?)<\/$tagname>/";
    preg_match_all($pattern, $string, $matches);
    return $matches[1];
 }
$array= getTextBetweenTags("

    <p>Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt. Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt.</p>

    <p><br />Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Nullam id dolor id nibh ultricies vehicula ut id elit.lor sit amet, consectetur adipiscing elit. Duis mollis, est non com.</p>
", "p"); 
echo $array[1];// will print 2nd para , for first para change $match[2] to $match [1]
?>

希望对您有所帮助

这里只是一个简单的方法:

$test ="<p>Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt. Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt.</p>

<p><br />Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Nullam id dolor id nibh ultricies vehicula ut id elit.lor sit amet, consectetur adipiscing elit. Duis mollis, est non com.</p>";

explode('</p>', $test);

print_r($test);

你可以试试

$string = "<p>Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt. Maecenas laoreet est bibendum, dictum mi vel, cursus mi. Curabitur feugiat libero vitae lorem venenatis consequat. Donec luctus nisi cursus miet sapien blandit, quis congue massa tincidunt.</p><p><br />Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Nullam id dolor id nibh ultricies vehicula ut id elit.lor sit amet, consectetur adipiscing elit. Duis mollis, est non com.</p>";

    preg_match_all("/\<p\>(.*?)\<\/p\>/", $string, $arrParagraphs);
    $paragraphs=$arrParagraphs[0];

    echo $paragraphs[0]."<br />\n";
    echo $paragraphs[1]."<br />\n";