Curs PHP-MySQL


Script PHP - Numarare cuvinte din pagini

Download - Nr. descarcari - 199          


Acest script afiseaza un tabel cu numarul total de cuvinte (cu lungimea mai mare de 2 caractere) dintr-o pagina specificata, si:

  • 1. - Primele 10 cuvinte (sau cate doriti), cele mai folosite, dupa numarul de repetari si procentul (densitatea) lor in pagina.
  • 2. - Sau numarul de repetari si procentul unui anume cuvant specificat.
- Un fel de contor cuvinte dintr-o pagina.
Sistemul, ca principiu, e simplu:
  • - scriptul preia continutul adresei paginii specificate intr-un formular
  • - elimina tag-urile HTML, spatiile multiple si alte caractere precum: , . / ; ...
  • - preia intr-o matrice fiecare cuvant si prelucreaza aceasta matrice afland numarul de repetari a fiecarui cuvant si procentul acestora ca densitate in raport cu toate cuvintele
  • - daca in formular, casuta pt. cuvant e lasata goala, scriptul va afisa primele zece cuvinte (sau cate vreti, dar aici 10) ca nr. de repetari
  • - daca acea casuta e completata, vor fi afisate doar rezultatele gasite pt. acel cuvant.
Puteti testa acest script cu formularul urmator:

Cod anti-spam: ff8d3
Adresa pagina: (inclusiv http://)
Cuvant: (Optional - minim 2 caractere)
Adaugati codul anti-apam

Mai jos aveti codul php cu explicatii la fiecare pas. In acesta nu am inclus si formularul, ci doar codul php simplu.
Scriptul mai complet (cu verificari suplimentare) in puteti descarca de la link-ul Download, de sus (nu include verificare cod antispam)

- 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('&nbsp;', '.', '"', ',', '?', '!', ';', ':', '/', "\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;
?>


Lectii / Tutoriale

Diverse PHP

Scripturi

  • PHP Script Chat
  • CMS Blog cu Ajax
  • Script Upload
  • Uploader
  • Multi-Uploader
  • Contoar pagina
  • Contor 2
  • Contoar click-uri
  • Contor Downloads
  • Numar Vizitatori si Utilizatori Online
  • Script inregistrare
  • Inregistrare Utilizatori
  • Curs valutar
  • Curs valutar 2
  • Mailer
  • Formular contact
  • Script comentarii
  • Script comentarii 2
  • Script comentarii 3
  • Vizitatori online
  • Script Paginare
  • Clasa Paginare
  • Script Page Rank
  • Script Chat
  • Numarare cuvinte
  • Recomanda pagina
  • Sistem notare
  • Countdown timer
  • Mini_Trafic Site
  • Subiecte forum
  • Clasa cautare Google
Script PHP - Numarare cuvinte din pagini
2008 - 2012 Webmaster, Webdesigner : MarPlo