Вставка рекламы в тексте

12
HR
На сайте с 22.08.2010
Offline
94
593

Здравствуйте! Задача - вставить рекламу в середине текста статьи. Есть такое решение:

function like_content($content) {

$google_ads='рекламный блок';
$button= '<div style="align-text:center;padding:8px 0px 8px 8px;">'.$google_ads.'</div>';
$poses = mb_split(' ', $content);
$counts=sizeof($poses);
#----------------------------------------
$pickme = $poses[$counts-55]; #<---------- ставим нужное число!
#----------------------------------------
#$content = substr_replace($content, "<div>" . $button . "</div>", $pickme, 0);
$content = str_replace($pickme, $pickme.$button, $content);
//reset it
return $content;
}
$text = like_content($text);

В этом варианте рекламный блок выводится после 55 слова начиная с конца статьи. Как сделать что бы блок выводился именно посередине статьи? Я ковырялся весь вечер так и не смог ничего придумать.

K
На сайте с 08.04.2010
Offline
89
#1

$pickme = $poses[$counts/2];
HR
На сайте с 22.08.2010
Offline
94
#2
Kasperaitus:
$pickme = $poses[$counts/2];

Пробовал.. так не получается.. это не правильно. Мне же нужен определенный элемент из массива, а не количество элементов массива поделенное пополам. Нужно как то заменить $pickme = $poses[$counts-55]; на $pickme = $poses[$counts-$i]; а $i = $counts/2. Пробовал так $pickme = $poses[$counts-$i] но это не работает, $pickme = $poses[$counts."-".$i] тоже не работает.

K
На сайте с 08.04.2010
Offline
89
#3

А если так:

$pickme = $poses[$counts-($counts/2)];
HR
На сайте с 22.08.2010
Offline
94
#4
Kasperaitus:
А если так:
$pickme = $poses[$counts-($counts/2)];

я так тоже пробовал, работает но некоторые статьи выглядяд вот так http://awesomescreenshot.com/0ab4d3nvb7 +++ - это рекланый блок.. т.е.е рекламный блок вставляется несколько раз.

---------- Добавлено 09.02.2015 в 00:31 ----------

я понял почему у меня так получилось, берется слово которое повторяется с статье много раз, например "но", "то" и т.п. и заменяется на рекламный блок. Получается скрипт работает нормально в принципе.

K
На сайте с 08.04.2010
Offline
89
#5

Ну так ведь в pickme находится слово, которое в статье может встречаться несколько раз. Вот они все и меняются на рекламный блок.

это не правильно. Мне же нужен определенный элемент из массива, а не количество элементов массива поделенное пополам

И может я чего не догоняю, но по мне что так:

$pickme = $poses[$counts/2];

что так:

$pickme = $poses[$counts-($counts/2)];

Результат один и тот же

HR
На сайте с 22.08.2010
Offline
94
#6
Kasperaitus:
Ну так ведь в pickme находится слово, которое в статье может встречаться несколько раз. Вот они все и меняются на рекламный блок.

Да, так и есть. Значит нужно как то взять два слова подряд и заменить их рекламным блоком.. вероятность что в статье будет встречаться два слова несколько раз маленькая.

J
На сайте с 20.02.2014
Offline
120
jkm
#7


$pickme = $poses[$counts/2];
$content = str_replace($pickme, $pickme.$button, $content);

Заменить на


$poses[$counts/2] .= $button;
$content = implode(' ', $poses);
K
На сайте с 08.04.2010
Offline
89
#8

А может контент делить не по словам а по целым предложениям?

HR
На сайте с 22.08.2010
Offline
94
#9
jkm:

$pickme = $poses[$counts/2];
$content = str_replace($pickme, $pickme.$button, $content);

Заменить на

$poses[$counts/2] .= $button;
$content = implode($poses);

Это вырезает все картинки из статьи. Надо наверно как то брать два слова подряд из статьи и заменять их. не знаю как это реализовать.. подскажите? Я сам ковыряюсь пробую тоже..

---------- Добавлено 09.02.2015 в 00:47 ----------

Kasperaitus:
А может контент делить не по словам а по целым предложениям?

Возможно, надо попробовать.. я правда не знаю как регулярку составить такую..

K
На сайте с 08.04.2010
Offline
89
#10
HEMASTER:

Возможно, надо попробовать.. я правда не знаю как регулярку составить такую..

Разбить контент по точкам

$poses = mb_split(' ', $content);

заменить на

$poses = mb_split('.', $content);
12

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