@lumb

Как вставить divы после первого абзаца и перед последним с учетом количества знаков?

$n = 300;
$n2 = 600;
$adv1 = <<<HTML
<div>---------реклама---------</div>
HTML;
$adv2 = <<<HTML
<div>---------реклама2---------</div>
HTML;

$a = preg_replace('@([^^]{'.$n.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$adv1\\2", trim($input), 1);

$a = preg_replace('@((?s)<p>(?!.*<p>)[^^]{'.$n2.'}.*?)@', "\\1$adv2\\2", trim($input), 1);


Вот эта конструкция
$a = preg_replace('@([^^]{'.$n.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$adv1\\2", trim($input), 1);

отсчитывает $n символов ищет </p> и вставляет туда блок.

А как сделать чтобы отсчитывало с конца документа $n2 символов, искало перед ними <p> и перед ним вставляло слой?

Попробую объяснить понятнее, хочу вставить рекламу после первого абзаца и перед последним, но с условием, что и там и там достаточно большой кусок текста, а не скажем просто подпись автора обернутая в <p> </p>
но, что-то запутался.
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@choupa
Архитектор (обычный, который строит)
В регулярки не вникал, но раз у вас получается вставлять сначала после $n символов, то для вставки с конца напрашивается решение: обернуть все строки задом наперёд, вставить спереди, как это у вас уже получилось, и обернуть результат обратно. Т.е. свести задачу к уже решённой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы