Вставить баннер в центр статьи

Бывает так – есть сайт на CMS c множеством статей и нужно вставить в каждую статью баннер, лучше в ее центр т.к. в таком месте у баннера будет лучшая эффективность. Но не вставлять же в админке код баннера в каждую статью отдельно.

Решение:

В шаблоне вывода статей сделать замену текста. Данный код не нарушает верстку, исключает встраивание в ячейки таблиц и маркированных списков.

$article = 'Текст статьи';
$banner  = 'Код баннера';

$text = $article;
$text = str_replace('<p> </p>', '', $text);
$text = preg_replace('/<table[^>]*?>.*?</table>/si', '', $text);
preg_match_all('/(<p|<ul|<ol|<div|<h2|<h3|<h4|<h5|<h6)+(.*)/i', $text, $res);

foreach ($res[0] as $row) {
	if (!empty($row)) {
		$bl[] = $row;
	}
}

$c = ceil(count(@$bl) / 3);
if (isset($bl[$c])) {
	$article = str_replace($bl[$c], $banner . $bl[$c], $article);
}

echo $article;
PHP
15.09.2016, обновлено 23.09.2019 1315

Поделится

Другие публикации

Данный вопрос возникает при верстке писем т.к. стили прописанные в head в почтовых сервисах и программах не работают, а...
25.12.2016 3189
PHP функции для перевода текста, ЧПУ, ссылок и имен файлов в транслит.
24.03.2019 1232
Например, на сайте статей есть поиск, он ищет ключевое слово по полям: название статьи, title и основной текст. SQL...
20.10.2017 1805
Зачастую в мобильных версиях сайта перенос текста тегом br только мешает, исключить его влияние можно несколькими...
16.09.2019 85
Примеры регулярных выражений для удаления данных из текста.
31.03.2018 5388