Reputation: 6820
I have a string like this:
<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>
I know how I can get the first paragraph like this:
function getFirstParagraph($string){
$string = substr($string,0, strpos($string, "</p>")+4);
return $string;
}
But I have no clue how I can get the second paragraph, can anybody help me with this?
Upvotes: 1
Views: 1299
Reputation: 6176
I would use regex.
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);
}
Upvotes: 3
Reputation:
You could try
$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";
Upvotes: 1
Reputation: 4696
Here is just a simple method:
$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);
Upvotes: 0
Reputation: 4275
Just use preg_match_all use the code below
<?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]
?>
Hope this helps you
Upvotes: 0