我有一个这样的字符串:
<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;
}
但我不知道如何获得第二段,有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
我会使用正则表达式。
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);
}
答案 1 :(得分:1)
你可以尝试
$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";
答案 2 :(得分:0)
只需使用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]
?>
希望这有助于你
答案 3 :(得分:0)
这是一个简单的方法:
$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);