Alléger mon code php tagcloud

Fermé
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 - 24 sept. 2011 à 21:22
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 - 3 oct. 2011 à 17:30
Bonsoir à tous,

J'ai le code suivant d'un site qui n'est pas encore finalisé (J'ai mis le css dans la page pour faire les essais):

Il s'agit de récupérer tous les mots des pages web de mon site, d'enlever les chiffres, les mots de moins de 4 lettres et les tags html.
Ensuite, je compte les occurrences de chaque mot pour savoir lesquels sont les plus utilisés.
Ensuite, j'utilise les 5 premiers résultats pour créer mon nuage de mots-clés.

J'ai 3 problèmes :

- Il me reste quelques tags html,
- Je pense que mon code est 1 peu lourd et qu'on peut l'alléger,
- A la fin du code, je ne parviens pas à récupérer dans l'array les 5 premiers résultats de façon automatique.

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL); 

// Ajout du contenu de chaque fichier
$file = file_get_contents('blabla.php');
$file .= file_get_contents('blabla2.php');
$file .= file_get_contents('blabla3.php');

etc...

function convertpunctuation($string){			
    $string = str_replace(
        array(mes stop words), 
        array(caractères de remplacement), 
       strtolower($string));
		 return $string;
    }
	
	$file = convertpunctuation($file);

$file  = strip_tags($file); // Enlève les tags html
$file = preg_replace('/\-?\d+/'," ",$file); //Enlève les chiffres

$regs1 = preg_split("/[^[:alpha:]]+/", $file); // Délimite les mots entre crochets
$regs2 = preg_replace("/\b[^ ]{1,3}\b/", "", $regs1); // Supprime les mots de moins de 4 caractères
$separated = implode(" ", $regs2);
			
$tab_copie = $separated; // copie de la table

$occurences = array_count_values(str_word_count(strtolower(str_replace("'", ' ', $tab_copie)), 1));

natsort($occurences);
$order = array_reverse($occurences);
$flip = array_flip($order);

/* foreach($order as $key => $value) {
 echo $key.': '.$value.' occurence(s)<br />';
 } */
 
 //print_r($flip);
 	echo '<style type="text/css">
    #tag-cloud {
    margin: 0;
    padding: 0;
    width: 100%;
    position: relative;
    }
    #tag-cloud li {
    display: block;
    }
    #tag-cloud li {
    display: block;
    position: absolute;
    }
    #tag-cloud #css {
    top: 0;
    left: 0;
    }
    #tag-cloud #xhtml {
    top: 0;
    right: 2em;
    }
    #tag-cloud #ia {
    top: 2em;
    left: 40%;
    }
    #tag-cloud #wiki {
    top: 4em;
    left: 0;
    }
    #tag-cloud #web20 {
    top: 4em;
    right: 1em;
    }
    #tag-cloud a {
    text-decoration: none;
    }
    #tag-cloud #css a:link,
    #tag-cloud #css a:visited,
    #tag-cloud #css a:hover {
    text-transform: uppercase;
    color: #fa0;
    font: bold 1.6em/normal Arial, sans-serif;
    }
    #tag-cloud #xhtml a:link,
    #tag-cloud #xhtml a:visited,
    #tag-cloud #xhtml a:hover {
    text-transform: lowercase;
    color: #0af;
    font: bold 2em/normal "Trebuchet MS", Trebuchet, sans-serif;
    }
    #tag-cloud #ia a:link,
    #tag-cloud #ia a:visited,
    #tag-cloud #ia a:hover {
    color: #0c0;
    font: bold 3em/normal Impact, sans-serif;
    }
    #tag-cloud #wiki a:link,
    #tag-cloud #wiki a:visited,
    #tag-cloud #wiki a:hover {
    color: #999;
    font: small-caps 4em/normal "Arial Narrow", Arial, sans-serif;
    text-transform: lowercase;
    }
    #tag-cloud #web20 a:link,
    #tag-cloud #web20 a:visited,
    #tag-cloud #web20 a:hover {
    color: #c0c;
    font: bold 1.2em/normal Georgia, serif;
    text-transform: uppercase;
    }
    #tag-cloud #ia {
    position: static;
    text-align: center;
    padding-top: 2em;
    list-style: none;
    }
    #tag-cloud #wiki, #tag-cloud #web20 {
    top: auto;
    }

</style>
<ul id="tag-cloud">
    <li id="css"><a href="#">'.$flip[81].'</a></li>
    <li id="xhtml"><a href="#">'.$flip[53].'</a></li>
    <li id="ia"><a href="#">'.$flip[51].'</a></li>
    <li id="wiki"><a href="#">'.$flip[49].'</a></li>
    <li id="web20"><a href="#">'.$flip[31].'</a></li>
    </ul>';



?>


Merci.
Fab.


A voir également:

4 réponses

faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
25 sept. 2011 à 18:51
Up, quelqu'un a une idée ?
0
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
26 sept. 2011 à 20:12
Dernier re-up après tant pis corde+tabouret ...
0
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
Modifié par faboons le 30/09/2011 à 13:22
Blague à part, avez-vous besoin de précision ?
Ou, la solution est-elle trop facile ? ;-)

@+.
Fab.
L'important n'est pas de convaincre, mais de donner à réfléchir.
0
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
3 oct. 2011 à 17:30
SOS SOS SOS !!!

I've got a "message in the bottle"
I send a sos to the world !!!

May Day !!!

Fab.
0