mb_substr отключение слов в выдержке после публикации?

Это код, который я использую, чтобы показать форматирование html в моих отрывках сообщения WordPress:

function get_excerpt($post, $ln){ if (!empty($post->post_excerpt)) { if (strlen($post->post_excerpt) > $ln) { echo mb_substr(($post->post_excerpt), 0, $ln); } } else { if (strlen($post->post_content) > $ln) { echo mb_substr(($post->post_content), 0, $ln); } } } 

Как я могу отредактировать mb_substr так, чтобы выдержка закончилась в определенный период? Например, выдержка закончится так: «у нее есть привлекательный и невинный шарм», а не «у нее привлекательный и невинный шарм, который заставляет людей заботиться о ней». Я хочу, чтобы выдержка закончила предложение и закончилась за период, а не только остановилась на лимитном значении, которое установлено на 800. В коде $ ln установлено значение 800.

ОБНОВИТЬ:

Это код, который я использовал. В отрывке слова все еще обрезаны, но я добавил ссылку «Подробнее» в конец с точками.

  function get_excerpt($post, $ln){ if (!empty($post->post_excerpt)) { if (strlen($post->post_excerpt) > $ln) { echo mb_substr(($post->post_excerpt), 0, $ln) . '...'; ?> <a href="<?php echo get_permalink( $post -> ID )?>">[Read More]</a> <?php } } else { if (strlen($post->post_content) > $ln) { echo mb_substr(($post->post_content), 0, $ln) . '...';?> <a href="<?php echo get_permalink( $post -> ID )?>">[Read More]</a> <?php } } } 

Если вы можете гарантировать, что будет "." в вашем тексте вы можете просто сделать это:

 echo strtok("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet egestas lacus. Maecenas posuere dolor vitae ultrices viverra.","."); 

Это выведет: «Lorem ipsum dolor sit amet, consectetur adipiscing elit»

Страница руководства strtok