У меня есть только очень грубое представление о том, что вы пытаетесь реализовать, поэтому вот очень грубый способ сделать это.
Вместо того, чтобы брать отдельный текст отдельно и затем выполнять все вычисления на нем, вы можете сделать это методом «на ходу».
Запустите цикл для всех персонажей вашего поста. Если вы обнаружите <
игнорировать («продолжить»), что будет дальше, пока вы не найдете >
, то есть, по сути, вы получите простой текст внутри цикла, вы можете выполнить все начальные подсчеты внутри этого цикла (общее число символ, количество слов и т. д.) - Запустите этот цикл еще раз и добавьте тег more к содержимому на основе начального количества, выйдя из второго цикла.
Ниже написана еще одна идея, которая намного сложнее и предполагает, что вы не сможете обойтись без простого текста.
Пусть M будет основной строкой, содержащей весь контент поста. Каждый раз, когда вы найдете <tag>
, поместите его в массив, запомните расположение этого тега в M, вставьте его в другой массив.
После того, как вы поместили все теги в M в массив вместе с расположением тега, у вас останется простой текст. После того, как вы закончите, верните все теги из массива в обычный текст в зависимости от местоположения. Этот курс, конечно, нуждается в доработке, но это просто идея, которую вы можете развить.