Как изменить текст(строку) с помощью пхп (регулярка?)

D
На сайте с 20.09.2010
Offline
153
269

Есть текст в хтмл:

<p>Абзац 1</p>

<p>Абзац 2</p>

<p>Абзац 3</p>

<p>Абзац 4</p>

Как после например 2 или 3 абзаца вставить блок <div>Banner 1</div>, чтобы текст получился таким

<p>Абзац 1</p>

<p>Абзац 2</p>

<p>Абзац 3</p>

<div>Banner 1</div>

<p>Абзац 4</p>

proweb.com.ua
На сайте с 05.03.2007
Offline
156
#1

for($i=0; $i<4; $i++)

{

if($i==0){print "<p>Абзац 1</p>";}

if($i==1){print "<p>Абзац 2</p>";}

if($i==2){print "<p>Абзац 3</p><div>Banner 1</div>";}

if($i==3){print "<p>Абзац 4</p>";}

}

FAQ group Твой форум (https://faq.wtf)
D
На сайте с 20.09.2010
Offline
153
#2

ну не каждый же абзац переменная)) Текст так приблизительно хранится:

$text = '<p>Абзац 1</p><p>Абзац 2</p><p>Абзац 3</p><p>Абзац 4</p>';

Samail
На сайте с 10.05.2007
Offline
328
#3


$text = '<p>Абзац 1</p><p>Абзац 2</p><p>Абзац 3</p><p>Абзац 4</p>';
$text = preg_replace('/(<p.+?<\/p>.*?<p.+?<\/p>.*?<p.+?<\/p>)/', '$1<div>Banner 1</div>', $text);
echo $text;
O
На сайте с 30.09.2019
Offline
18
#4


$text = explode("</p>", $text);
for ($i = 0; $i <count($text); $i++ ) {
if ($i == 3) {
// Блок после 4 абзаца
}
echo $text[$i] . "</p>";
}

ХЗ
На сайте с 31.08.2008
Offline
132
#5

я обычно в массив загоняю, далее в нужном ключе подставляю нужное значение (можно сделать как в цикле, так и без), рабочий код подобного поможет найти гугл

proweb.com.ua
На сайте с 05.03.2007
Offline
156
#6
datum:
ну не каждый же абзац переменная))

а где Вы там увидели переменную?

datum:
Текст так приблизительно хранится:
$text = '<p>Абзац 1</p><p>Абзац 2</p><p>Абзац 3</p><p>Абзац 4</p>';

Так оно и будет, в зависимости от того какие внутри правил Вы выставите html теги.

P.S. Я набросал такой код, чтоб понятнее было разобраться, хотя Samail, написал более правильнее...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий