Keywords automáticas con php
- Detalles
- Categoría: Programación
- Última actualización el Sábado, 17 Septiembre 2011 13:24
- Escrito por paco
- Visto: 819
Hoy día los gesteros de contenido están de moda en la publicación y creación de páginas web, al mismo tiempo que es casi indispensable disponer de un blog en cada site. La mayoría (por no decir todos) de gesteros de contenido y sistemas de bloging fallan en la generación de meta tags de descripción y keywords (palabras clave) adecuadas para cada post. Así que vamos a escribir un sencillo script php para generar tanto la Meta-descripción como las meta-keywords para cada página de forma automática.
En el primer intento voy a hacer que el script genere la meta-descripción tomando los 200 primeros carateres del contenido del post. Las keywords se generaran tomando las 17 palabras más frecuentes del contenido desechando las palabras incluidas en la lista de palabras que no queramos que aparezcan, más 3 palabras que siempre se incluirán.
Solo os quedaría implementarla en vuestro gestor de contenido para recibir la varialbe $text que contendrá el contenido de vuestro post, yo además he incluido también el título del post, pues este suele contener palabras claves importantes.
<?php
class SeoToolsHelper {
function Keys($text) {
$text = clean($text);
$blacklist='lista,de,palabras,a,eliminar';
$sticklist='lista,de,palabras,que,siempre,apareceran';
$minlength = 3;
$count = 17;
$text = preg_replace('/[\.;:|\'|\"|\`|\,|\(|\)|\-]/', ' ', $text);
$text = preg_replace('/¡/', '', $text);
$text = preg_replace('/¿/', '', $text);
$keysArray = explode(" ", $text);
$keysArray = array_count_values(array_map('strtolower', $keysArray));
$blackArray = explode(",", $blacklist);
foreach($blackArray as $blackWord){
if(isset($keysArray[trim($blackWord)]))
unset($keysArray[trim($blackWord)]);
}
arsort($keysArray);
$i = 1;
$keywords = "";
foreach($keysArray as $word => $instances){
if($i > $count) break;
if(istrlen(trim($word)) >= $minlength && is_string($word))) {
$keywords .= $word . ", ";
$i++;
}
}
$keywords = rtrim($keywords, ", ");
return $keywords=$sticklist.''.$keywords;
}
function description($text) {
$lenght=200;
$text=clean($text);
$metadesc = $metadesc . ' ';
$metadesc = substr($metadesc,0,$length);
$metadesc = substr($metadesc,0,strrpos($metadesc,' '));
}
function clean($text) {
$regex = '/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)(\\.[A-Za-z0-9-]+)*)/iex';
$desc = preg_replace($regex, '', $text);
$text = preg_replace( "''si", '', $text );
$text = preg_replace( '/]*>([^<]+)<\/a>/is', '\2 (\1)', $text );
$text = preg_replace( '//', '', $text );
$text = preg_replace( '/{.+?}/', '', $text );
$text = preg_replace( '/ /', ' ', $text );
$text = preg_replace( '/&/', ' ', $text );
$text = preg_replace( '/"/', ' ', $text );
$text = strip_tags( $text );
$text = htmlspecialchars($text);
$text = str_replace(array("\r\n", "\r", "\n", "\t"), " ", $text);
while (strchr($text," ")) {
$text = str_replace(" ", " ",$text);
}
for ($cnt = 1; $cnt < strlen($text)-1; $cnt++) {
if (($text{$cnt} == '.') || ($text{$cnt} == ',')) {
if ($text{$cnt+1} != ' ') {
$text = substr_replace($text, ' ', $cnt + 1, 0);
}
}
}
return $text;
}
}
?>
Es una primera versión que espero ir mejorando a medida que vayan surgiendo nuevas necesidades o encuentre algún fallo, que seguro aparecerán. Por supuesto, nota que faltan los tags php para englobar el código.
palabras clave - keywords - descripción - meta tags - php - script php - meta-keywords - meta-description




Perfil
Artículos
RSS