Для достижения вашей цели на PHP вы можете использовать регулярные выражения для поиска мест, где необходимо вставить `#BANNER#` после каждых 10 символов, сохраняя при этом правильную структуру HTML. Важно убедиться, что вставка происходит только после закрывающих тегов. Вот пример кода, который решает эту задачу:
```php
function insertBannerAfterEvery10Chars($html) {
// Используем регулярное выражение для разбиения текста на части
// Мы ищем все текстовые участки в HTML, игнорируя теги
$pattern = '/(<[^>]+>|[^<]+)/';
preg_match_all($pattern, $html, $matches);
$result = '';
foreach ($matches[0] as $part) {
// Проверяем, является ли текущая часть текстом
if (preg_match('/<.*?>/', $part)) {
// Если это тег, добавляем его в результат без изменений
$result .= $part;
} else {
// Это текст, разбиваем его на части по 10 символов
$length = strlen($part);
for ($i = 0; $i < $length; $i += 10) {
// Обрезаем текст до 10 символов
$result .= substr($part, $i, 10);
// Проверяем, если мы не находимся в конце текста
if ($i + 10 < $length) {
// Вставляем хештег #BANNER#
$result .= '#BANNER#';
}
}
}
}
return $result;
}
// Пример использования
$htmlInput = '<p>Это пример текста, который нужно разбить на части по 10 символов.</p>';
$resultHtml = insertBannerAfterEvery10Chars($htmlInput);
echo $resultHtml;
```
### Как это работает:
1. **Регулярное выражение**: Используется регулярное выражение для разбиения входного HTML-кода на текст и теги. Таким образом, мы можем обрабатывать их отдельно.
2. **Проверка частей**: Для каждой части проверяем, является ли она текстом или тегом.
3. **Разбиение текста**: Если часть является текстом, мы разбиваем его на куски по 10 символов и после каждого фрагмента (кроме последнего) добавляем `#BANNER#`.
4. **Склеивание результата**: Сформированный текст склеивается обратно с тегами, чтобы сохранить корректный HTML.
Таким образом, ваш HTML-код не будет поврежден, и хештег будет вставлен только в нужных местах.