$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>
но, что-то запутался.