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

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

Бывает так – есть сайт на 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, обновлено 13.10.2020
4679

Комментарии

, чтобы добавить комментарий.

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

Шорткоды на регулярных выражениях
Часто на сайтах возникает необходимость вставлять в тексты страниц динамичные информационные блоки – баннеры, телефоны...
5631
+3
Поиск похожих текстов в базе данных MySQL + PHP
Один из вариантов поиска похожих статей в базе данных основан на схождении слов в двух текстах.
7257
+6
Как преобразовать текст из textarea в параграфы HTML
Такой вопрос возникает при вставке текста из формы на сайт (отзывы, комментарии и т.д.) с форматированием элементом p.
7180
+3
Как дописать стили в атрибут style тегов HTML через PHP
Данный вопрос возникает при верстке писем т.к. стили прописанные в head в почтовых сервисах и программах не работают, а...
18789
+3
Contenteditable – текстовый редактор
Если добавить атрибут contenteditable к элементу, его содержимое становится доступно для редактирования пользователю, а...
43712
+34
Переносы строк и тег BR в PHP
В PHP за перенос текста отвечают управляющие символы r (возврат каретки) и n (перевод строки), причем в разных операционных системах (на которых работает сервер) они применяются в разных комбинациях.
49267
+4