Как сформировать meta-теги Description и Keywords

29.08.2013  13:05

Допустим, у вас педальная админка, не формирующая автоматически meta-теги Description и Keywords. Либо у вас 1С-Битрикс, а ключевые слова-то должны быть не абы как, а непременно через запятую.

Итак.

$txt = preg_replace("/(\s+)/is",", ",$txt);// расставить запятые между словами

И тут опа: некоторые запятые стали двойными. Тогда:
$txt = preg_replace("/(\,+){2,}/is",",",$txt);

Но для того чтобы всё это провернуть, надо текст привести в божеский вид. Для начала вырежем все теги:
$txt = strip_tags($txt);

Затем заменим всяческие кавычки и прочий мусор на html-сущности:
$txt = htmlspecialchars($txt);

Вырежем табуляцию
$txt = preg_replace("/(\t+)/is","",$txt);

затем заменим множественные пробелы одинарными
$txt = preg_replace("/(\s+){2,}/is"," ",$txt);

и поубиваем все переводы строк
$txt = preg_replace("/(\r\n)+/i", "", $txt);

И финально обкорнаем строку по длине:
$txt = substr($txt, 0, 250);

или mb_substr, если для UTF8. В данном случае строка обрезается «по-тупому», без учёта окончания слов и слова будут резаться по-середине.
И соберём это всё вместе:
function keywordsShort($txt) {
	$txt = strip_tags($txt);
	$txt = htmlspecialchars($txt);
	$txt = preg_replace("/(\t+)/is","",$txt);// знаки табуляции вырезать
	$txt = preg_replace("/(\s+){2,}/is"," ",$txt);//двойные пробелы заменить одним
	$txt = preg_replace("/(\r\n)+/i", "", $txt);// переводы строки вырезать
	$txt = trim($txt);
	$txt = preg_replace("/(\s+)/is",", ",$txt);// расставить запятые между словами
	$txt = preg_replace("/(\,+){2,}/is",",",$txt);// двойные запятые заменить одинарными
	$txt = substr($txt, 0, 250);// и обрежем получившееся
	return $txt;
}
Функция для Description будет аналогичная, только без расстановки запятых (можете даже объединить в одну функцию):
function keywordsShort($txt) {
	$txt = strip_tags($txt);
	$txt = htmlspecialchars($txt);
	$txt = preg_replace("/(\t+)/is","",$txt);// знаки табуляции вырезать
	$txt = preg_replace("/(\s+){2,}/is"," ",$txt);//двойные пробелы заменить одним
	$txt = preg_replace("/(\r\n)+/i", "", $txt);// переводы строки вырезать
	$txt = trim($txt);
	$txt = substr($txt, 0, 250);// и обрежем получившееся
	return $txt;
}


перейти в Блог | Блог (стр. 15)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): PHP 56  web-программирование 80  молодым домохозяйкам 44  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)