Как с помощью PHP вставлять контекстную рекламу в тексты статей?

Доброго времени суток, уважаемые читатели блога SoftMaker.kz. Сегодня я хочу поговорить о том как, используя
язык программирования PHP, вставлять код контекстной рекламы в тексты статей сайта.

Некоторые правила размещения рекламы в тексте статей

  1. Не нужно, чтобы в тексте статьи было слишком много рекламы и она мешала бы чтению самой статьи.
  2. Не очень здорово, когда рекламный код сразу под названием статьи и не поймёшь, где название, а где рекламный код.
    После заголовка статьи нужно отступить хотя бы один абзац.
  3. Не стоит вставлять рекламный блок в центре абзаца, разрывая его на две части. Лучше вставить контекстную рекламу
    между абзацами.
  4. Было бы здорово, если бы рекламные блоки были разделены между собой одной тысячей или больше символов.

Вставка блока рекламы между абзацами статьи

Для того чтобы вставлять блок контекстной рекламы, руководствуясь правилами, описанными выше, нужно в тексте статьи определить места вставки рекламного блока. Согласно тем же условиям это пространство между абзацами. Но как получить необходимые значения, которые будут указывать на такие места между абзацами?

Для этого воспользуемся функцией языка PHP explode. Функция explode(string $separator, string $string ) возвращает массив строк, полученных разбиением строки string с использованием separator в качестве разделителя. В нашем случае аргумент функции string это текст нашей статьи, в которую будем вставлять рекламный код. А аргумент функции separator это строка вида «</p>», которая будет разделителем.

<?php

$tag = "</p>";
$pieces = explode($tag, $text);

?>

После использования функции explode мы получаем массив $pieces, состоящий из абзацев нашей статьи. Теперь нам предстоит выделить и запомнить уникальные строки из статьи, которые будут указывать на места в тексте, куда мы будем добавлять блоки контекстной рекламы.

<?php

function ins_adv($text)
{
$txt='';$i=0;
$block = "Здесь должен быть вставлен ваш рекламный код";
// массив состоящий из строк, которые нужно заменить блоком рекламы
$arr = array(); 
// массив, состоящий из строк с блоком рекламы, который будет вставлен
// между абзацами текста статьи 
$arr1 = array();
foreach ($pieces as $piece) {
	$txt.= $piece;
	// Проверяем количество символов, чтобы соответствовать правилу 4
	// размещения рекламы в тексте статей
	if (strlen(strip_tags($txt))>1200)
	{
		// добавляем в конец разделитель $tag,
		// т.к. в массив попадают строки без него.
		$arr[] = substr($piece, -250).$tag; 
		$arr1[] = substr($piece, -250).$tag.$block;
		$txt=''; $i+=1;
	}
	if ($i==3) {break;}
}
return str_replace($arr, $arr1, $text);
}

?>

Как видно из вышеприведенного кода, мы проходим, с помощью цикла по всем элементам массива $pieces, чтобы запомнить каждые 250 символов конца абзаца в массив $arr. Также мы запоминаем в массив $arr1 те же 250 символов конца абзаца с рекламным блоком на конце, чтобы впоследствии заменить его в нужных местах текста.

Согласно условию 4 наших правил размещения рекламы в тексте статей мы должны размещать рекламные блоки из расчета один блок минимум на 1000 символов текста. Поэтому в цикле нашего коде присутствует условие, которое проверяет количество символов в абзацах без подсчета символов тэгов HTML и PHP. (здесь используем функцию strip_tags, для удаления HTML и PHP тэгов из строки).

Как только число символов перерастёт 1200, мы запоминаем место в тексте статьи между абзацами. Как уже описано в коде, в конец нашей уникальной строки добавляем в конец разделитель $tag, т.к. в массив попадают строки без него.

Условие после цикла проверяет, чтобы в текст статьи попало не больше трёх блоков контекстной рекламы.Это условие необходимо, так как, например, согласно условиям размещения рекламы от Google AdSense на странице сайта можно размещать не больше трёх блоков контекстной рекламы. Если вы разместите больше, реклама всё равно не будет отображена, а вы нарушите условия размещения рекламы на сайте. Кстати, вы можете создать свой собственный аккаунт на Google.

Теперь осталось самое лёгкое — заменить те места в тексте статьи, которые мы запомнили на контекстную рекламу. Для этого используем функцию языка PHP str_replace, она заменяет в тексте статьи массив строк поиска
на массив строк с нашим блоком рекламы.

Небольшая функция для замены заранее размещённого тэга <!—advertisement—> в тексте статьи

Бывает, что лучше заранее указать места в тексте статьи, чтобы потом туда вставить блок контекстной рекламы. Можно это сделать, разместив в выбранных местах текста статьи тэг <!—advertisement—>. Затем программным способом заменять эти места на блоки контекстной рекламы.

<?php

function change_tag_advertisement($text)
{

// заменим тэг, используя регулярное выражение
$count = null;
return preg_replace('~<!--advertisement-->~', $adsense, trim($text), 2, $count);

}

?>

Как видно из кода приведенного выше, мы заменяем тэг <!—advertisement—>, используя функцию preg_replace, которая выполняет поиск и замену по регулярному выражению.

Почему этим способом удобнее размещать рекламу? Дело в том, что вы можете заранее определить наиболее подходящие места в тексте статьи, чтобы они в полной мере удовлетворяли нашим правилам размещения рекламы в тексте статей.

Совмещение способов вставки блоков рекламы в текст статьи для достижения наилучшего результата

Что, если у вас есть статьи, в которых вы уже разместили в подходящих местах тэг <!—advertisement—>, а в других хотите, чтобы блоки контекстной рекламы проставлялись автоматически? Как совместить эти два способа? В этом нет ничего сложного. Можно поступить следующим образом:

<?php

function join_adv_methods($text)
{

// если есть хотя бы один тэг <!--advertisement-->, то заменяем его
// и возвращаем текст статьи 
if (substr_count($text, '<!--advertisement-->') >= 1)
{
	return change_tag_advertisement($text);
} else {
	return ins_adv($text);
}

?>

Как видно из кода выше, в начале функции join_adv_methods было добавлено дополнительное условие. Это условие проверяет количество тэгов <!—advertisement—>. Это делается при помощи функции языка PHP substr_count, которая возвращает число вхождений тэга <!—advertisement—> в текст нашей статьи. Если не найдено ни одного тэга, то происходит автоматическая вставка блока контекстно рекламы в текст статьи.

Если вы хотите создать свой индивидуальный дизайн сайта, то прочитайте статью как из макета создать работающий веб-сайт.

Ну, на этом всё! Надеюсь, что всё подробно рассказал! Успехов в освоении PHP!

2 ответы

Комментарии закрыты.