disign.it | PHP: analizzare ricorrenza parole chiave in contenuto testuale | a digital sign for a best design!
A digital sign for a best design
Programmazione 3.062 visualizzazioni

PHP: analizzare ricorrenza parole chiave in contenuto testuale

16/11/2012

La definizione delle parole chiave da inserire nei meta per aiutare il motore di ricerca nell'indicizzazione del contenuto di una pagina è spesso un momento critico.

Una delle regole da osservare, per quanto difficile e 'misteriosa' sia la materia, dice che le keywords indicate devono esser presenti nel contenuto testuale, ma non con una frequenza eccessiva per non esser classificate come 'inganno'.

 

Attraverso una funzione php possiamo effettuare l'analisi di un testo ed individuare quali e quante parole ricorrano maggiormente all'interno del testo stesso.

 

Nel chiamare la funzione, oltre a passare il testo da analizzare, definisco la lunghezza minima delle parole da analizzare e il numero minimo di occorrenze che mi interessa rilevare.

 

Nell'esempio riportato ricerco parole aventi almeno 8 caratteri e che ricorrano almeno 2 volte, e quindi otterrò il risultato:

fringilla (2 volte)
curabitur (2 volte)
suscipit (2 volte)
adipiscing (2 volte)


 

function extract_keywords($str, $minWordLen, $minWordOccurrences, $asArray = false)
    {
    function keyword_count_sort($first, $sec)
    {
    return $sec[1] - $first[1];
    }
    $str = preg_replace('/[^\p{L}0-9 ]/', ' ', $str);
    $str = trim(preg_replace('/\s+/', ' ', $str));
    
    $words = explode(' ', $str);
    $keywords = array();
    while(($c_word = array_shift($words)) !== null)
    {
    if(strlen($c_word) < $minWordLen) continue;
    
    $c_word = strtolower($c_word);
    if(array_key_exists($c_word, $keywords)) $keywords[$c_word][1]++;
    else $keywords[$c_word] = array($c_word, 1);
    }
    usort($keywords, 'keyword_count_sort');
     //print_r($keywords);
    $final_keywords = array();
    foreach($keywords as $keyword_det)
    {
    if($keyword_det[1] < $minWordOccurrences) break;
   
    array_push($final_keywords, $keyword_det[0]. ' <em>(' . $keyword_det[1] . ' volte)</em>');
    }
    return $asArray ? $final_keywords : implode('<br />', $final_keywords );
    }
    
  
    $text = "
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    Curabitur eget ipsum ut lorem laoreet porta a non libero.
    Vivamus in tortor metus. Suspendisse potenti. Curabitur
    metus nisi, adipiscing eget placerat suscipit, suscipit
    vitae felis. Integer eu odio enim, sed dignissim lorem.
    In fringilla molestie justo, vitae varius risus lacinia ac.
    Nulla porttitor justo a lectus iaculis ut vestibulum magna
    egestas. Ut sed purus et nibh cursus fringilla at id purus.
    ";
    echo extract_keywords($text, 8, 2);

← Php: ricavare estensione file PHP: ricerca stringa in array →

Invia una domanda o un commento sull'articolo

I campi obbligatori sono segnalati *

*

*



 

© 2009 - 2017 Impronte digitali di Luca Frassineti. Tutti i diritti riservati.