Acest script afiseaza un tabel cu numarul total de cuvinte (cu lungimea mai mare de 2 caractere) dintr-o pagina specificata, si:
- Codul scriptului
<?php
/** Script numarare cuvinte
* http://www.marplo.net/php-mysql **/
$nr = 10; // Nr. rezultate returnate
// Functia pt eliminare spatii continui si cuvinte cu un caracter
function rem_space($str) {
$l = strlen($str) - 1;
if ($l>0) {
// Apeleaza functia pana elimina toate spatiile
if ($str{0}==' ' || $str{$l}==' ') rem_space(trim($str));
else return trim($str);
}
else return 1;
}
$cuv = ''; // Aceasta variabila trebuie sa contina cuvantul dorit a fi cautat (de obicei prin $_POST)
$text = file_get_contents('adresa_site'); // Preia continutul paginii precizate sau primite ca parametru
// Elimina tag-urile si transforma tot sirul in litere mici
$text = strip_tags(trim($text));
$text = strtolower($text);
// Se defineste o matrice cu caracterele ce nu intereseaza si le sterge
$ar_del = array(' ', '.', '"', ',', '?', '!', ';', ':', '/', "\n", "\t");
$text = str_replace($ar_del, '', $text);
// Creaza o matrice a cuvintelor din sir, si le elimina spatiile exterioare
$ar_text = explode(' ', $text);
$ar_text = array_map("trim", $ar_text);
// Pastreaza cuvintele care au mai mult de un caracter si fara spatii
for($i=0; $i<count($ar_text); $i++) {
if (rem_space($ar_text[$i])!=1) $ar_text2[] = $ar_text[$i];
}
$nr_cuv = count($ar_text2); // Nr. total de cuvinte ramase
// Creaza un array in care cheile sunt cuvintele iar valoarea lor numarul de cate ori se gasesc in matrice
$ar_nr_cuv = array_count_values($ar_text2);
arsort($ar_nr_cuv); // Sorteaza array-ul 'valoare-key'
// Seteaza variabila care preia rezultatele ce trebuie returnate
$result = 'Total cuvinte: <u>'.$nr_cuv.'</u> (<i>mai lungi de 1 caracter</i>)';
// Daca se cauta un anumit cuvant (valoarea lui $cuv sa aibe mai mult de 1 caracter)
if (strlen($cuv)>1) {
// Cauta daca acel cuvant e in matrice
if (isset($ar_nr_cuv[$cuv])) {
// Afla procentul de densitate a cuvantului si-l pastreaza cu 2 zecimale
$procent = $ar_nr_cuv[$cuv]*100/$nr_cuv;
$procent = round($procent, 2);
$result .= '<br />'.$cuv.' - '.$ar_nr_cuv[$cuv].' - '.$procent.'%'; // Rezultatul ce va fi returnat
}
else $result = $result .= '<br />'.$key.' - 0 - 0%'; // Rezultatul ce va fi returnat
}
else {
// Preia primele $nr elemente (sau cate sunt daca`s mai putine) din matrice si le transforma in sir
$nr = min($nr, count($ar_nr_cuv));
$i = 0;
foreach($ar_nr_cuv as $key => $val) {
// Daca cheia e un cuvant mai mare de 1 caracter
if (strlen(trim($key))>1) {
// Afla procentul de densitate a fiecarui cuvant si-l pastreaza cu 2 zecimale
$procent = $val*100/$nr_cuv;
$procent = round($procent, 2);
$result .= '<br />'.$key.' - '.$val.' - '.$procent.'%'; // Rezultatul ce va fi returnat
$i++;
}
if ($i==$nr) break; // Intrerupe parcurgerea la $nr
}
}
// Afiseaza rezultatul
echo $result;
?>