есть текст - находиться в <div id="txt"> </div> в этом диве допустим есть 5 контейнеров <p> т.е PHP: <div id="txt"> <p>.......</p> <p>.......</p> <p>.......</p> <p>.......</p> <p>.......</p> <p>.......</p> </div> возможно ли средствами PHP реализовать вставку html кода из переменой $adv после n-го числа тега </p> PHP: <div id="txt"> <p>.......</p> <p>.......</p> <?php echo $adv ;?> <p>.......</p> <p>.......</p> <p>.......</p> <p>.......</p> </div>
$text="<div id=\"txt\"> <p>.......</p> <p>.......</p> <p>.......</p> <p>.......</p> <p>.......</p> <p>.......</p> </div> "; $mas=explode("\n",$text); $k=0; $rez_text=""; $N=?; foreach($mas as $string) { if (strpos("<p>",$string)) $k++; $rez_text.=$string; if ($k==$N) $rez_text.="<?php echo $adv ;?> \n"; }
PHP: $text = "<div><p>1</p><p>2</p><p>3</p></div>"; $adv = "<div></div>"; echo preg_replace('/(<p>.*?<\/p>){2}/ms', "$0$adv", $text); Где {2} - после какого <p></p> вставлять
речь идет о Joomla 1.5 в шаблоне вывод контента осуществляет вставка <jdoc:include type="component" /> Например частный случай : эта вставка дает код: PHP: <div id="page"> <h2 class="contentheading"> Печать на баннерной ткани</h2> <p>Широкоформатная печать - один из основных способов изготовления наружной рекламы. Область применения данного вида печати очень широк: от изготовления плакатов до огромных рекламных поверхностей.</p> <p>Условно широкоформатную печать можно разделить на 2 категории по области применения: для наружной рекламы и интерьерная печать. В первом случае она применяется для производства носителей для наружной рекламы. Во втором случае область применения ее значительно шире. Это разнообразные рекламные носители, интерьерные плакаты, мобильные стенды, постеры и т.д.</p> <p>Сроки эксплуатации широкоформатной печати в наружной рекламе ограничены до 2х -4 лет с ламинацией. Напротив при использовании в интерьере, срок службы многократно увеличивается, доходит до 10-15 лет. Это обусловлено тем, что на улице рекламные материалы такого типа подвержены внешним воздействиям ультрафиолета, температурным колебаниям и агрессивным средам, что приводит к их обесцвечиванию и разрушению.</p> <p>Рекламно-производственная компания готова предоставить Вам различные варианты: от самых недорогих до решений класса lux.</p> <p>В зависимости от целей рекламной компании, наши менеджеры предложат Вам печать на различных видах материалов: бумаге, самоклеющейся пленке, баннерном полотне, сетке с необходимым для Вас качеством (разрешением).</p> </div> в шаблоне я сделал так. PHP: <?php $text=' <jdoc:include type="component" />'; $ref='реклама'; $a=explode('</p>',$text); $a[3]=$ref.$a[3]; echo $text=implode('</p>',$a); ?> в итоге получил: PHP: <div id="page"> <h2 class="contentheading"> Печать на баннерной ткани</h2> <p>Широкоформатная печать - один из основных способов изготовления наружной рекламы. Область применения данного вида печати очень широк: от изготовления плакатов до огромных рекламных поверхностей.</p> <p>Условно широкоформатную печать можно разделить на 2 категории по области применения: для наружной рекламы и интерьерная печать. В первом случае она применяется для производства носителей для наружной рекламы. Во втором случае область применения ее значительно шире. Это разнообразные рекламные носители, интерьерные плакаты, мобильные стенды, постеры и т.д.</p> <p>Сроки эксплуатации широкоформатной печати в наружной рекламе ограничены до 2х -4 лет с ламинацией. Напротив при использовании в интерьере, срок службы многократно увеличивается, доходит до 10-15 лет. Это обусловлено тем, что на улице рекламные материалы такого типа подвержены внешним воздействиям ультрафиолета, температурным колебаниям и агрессивным средам, что приводит к их обесцвечиванию и разрушению.</p> <p>Рекламно-производственная компания готова предоставить Вам различные варианты: от самых недорогих до решений класса lux.</p> <p>В зависимости от целей рекламной компании, наши менеджеры предложат Вам печать на различных видах материалов: бумаге, самоклеющейся пленке, баннерном полотне, сетке с необходимым для Вас качеством (разрешением).</p> </div> </p>реклама т.е </p>реклама вывелось вообще тупо в конце - а не после 3го </p> если значение $text задать самомум - то да все срабатывает - а так вот нет
обычно такая задача решается при написании очередного костыля. посему может лучше пересмотреть логику поги?
причем тут костыль? Просто есть цель сделать иммено так, причем не спроста, лутше бы по теме кто что подсказал.
Тебе не судьба что ли поправить компонент и не придумывать лишнего? Во view этого компонента наверняка циклом вставляются <p></p>. Вот и передай из контроллера во вью нужное тебе значение рекламного блока и в цикле поставь условие, когда нужно выводить его.