- Я бы в идеале вставлял рекламу только с разрывом абзаца (возможно, тегом p) или разрывом строки (возможно, тегом br).
В противном случае, при разрыве слова. И если это не удастся, вставьте его между персонажами. (Чтобы покрыть странные угловые случаи.)
Так вот, К.И.С.С. Решение:
- считайте буквы, слова, строки и абзацы по ходу движения.
Просто выполните каскадный сбой в направлении вашего предпочтительного решения:
- если вы наберете 2000 символов - просто включите рекламу и начните все заново считать.
Этого бы никогда не произошло, кроме как в странных случаях.
- Если вы наберете 250 слов - просто вставьте объявление и начните заново считать все с нуля.
Это случается очень редко, только с плохо отформатированным текстом, странными языками пришельцев и т. Д.
- Если вы наберете 50 новых строк - просто вставьте объявление и начните заново считать все с нуля.
Это могло бы случиться только с авторами, которые не используют разрывы абзацев.
- И, наконец, если вы дойдете до 3 новых параграфов - вставьте объявление и начните все заново считать.
Это то, что обычно происходит.
Я не будет беспокоиться о таких сложных идеях, как возврат в соседних случаях и т. Д. И т. Д. Это просто не стоит. Это почти всегда дает вам лучшее общее долгосрочное решение для последовательного и простого подхода «каскадных сбоев». Сделайте вышеописанное, и все готово!
Это гораздо больше, чем искусство, делать что-то подобное. Вам понравится выше, надеюсь, это поможет!
Очевидно, мелодия числа, которые я положил в псевдокод выше. Большая часть работы на такой работе - это настройка параметров на реальном испытательном стенде. Написание самого кода - это ничто, вам нужно создать хороший тестовый стенд, чтобы вы могли сделать это на своих глазах и увидеть, как он работает (в идеале нужно включить «циферблаты» для параметров, чтобы вы могли видеть результаты в реальном времени, понимаете? ) Вот как ты это делаешь!