Обрезать строку до конца второго экземпляра указанного аргумента

Я пытаюсь обрезать строку до конца second абзац, так что по сути конец второго экземпляра </p>

У меня уже есть код, чтобы урезать его до 500 символов до ближайшего пробела. Как я мог сделать что-то подобное, но с </p> в качестве параметра вместо него и переменной длины (абзацы могут быть длинными).

Мне также нужно добавить проверку, чтобы увидеть, если весь пост содержание меньше 300 символов, в этом случае я могу вывести все это

Это код, который у меня есть, который похож, но не уверен, как его адаптировать. Как бы вы это сделали?

if (strlen($content) > 300){
$content_trimmed = substr($content, 0, strpos($content, ' ', 500));
}

0

Решение

Эта функция вернет первые два абзаца:

<?php

$content = "<p>Paragraph One</p><p>Paragraph Two</p><p>Paragraph Three</p>";

function trimArticle($content) {
if (strlen($content) > 300) {
$paragraphs = explode('</p>', $content);
return $paragraphs[0].'</p>'.$paragraphs[1].'</p>';
} else {
return $content;
}
}

echo trimArticle($content);

?>

Имеет такой результат:

<p>Paragraph One</p><p>Paragraph Two</p>
1

Другие решения

Другой способ — проверить длину, а затем использовать разнесение, чтобы захватить эти части. Затем добавьте отсутствующий тег закрывающего абзаца, который разрывается, захватывает и объединяет первые два элемента массива.

if (strlen($content) > 300){
$content = explode("</p>",$content) ;
$content_trimmed = $content[0]."</p>".$content[1]."</p>";
} else {
$content_trimmed = $content;
}
echo $content_trimmed;
0

По вопросам рекламы [email protected]