Scrieți un "tag cloud" în PHP
Cum să afișați etichete sau cuvinte cheie pe site cu diferite dimensiuni ale fontului, astfel încât eticheta să fie mai populară, cu atât este mai mare dimensiunea cuvântului, dar nu la infinit, dar în anumite limite?
Uh, cea mai grea parte a fost aceea de a traduce întrebarea într-un rus acceptabil :)
Într-adevăr, „nor tag-ul“ pe cele mai multe site-uri web moderne, ele au vedere foarte diferite de frumoase filare „flash drive“ la „câmp al cuvintelor“ normal ca în acest blog. Întregul truc este faptul că mai populare cuvinte derivate dimensiunea bo lshim font, dar acest proces nu poate merge prea departe în avans, și a fost limitat la unele programator domeniu de aplicare specificat :) Ne-ar fi de ajuns pentru câteva linii de cod din sursa acestui blog, vom simplifica mai mult .
Aveți nevoie doar de 3 setări:
Asta înseamnă că nu distingem mai mult de 10 dimensiuni diferite de fonturi, textul nu va fi niciodată mai mic de 8 sau mai multe BASEFONT + PTSTEP * TAGSLEVEL = 18 de puncte.
Să presupunem că informațiile de care suntem interesați sunt stocate în tabelul de etichete cu următoarea structură:
Desigur, pot exista alte câmpuri în tabel, dar ele nu sunt importante pentru noi acum.
Mai întâi aflăm care este maximumul etichetei "de rating" existentă:
Acum vom selecta toate etichetele și vom forma un nor în ciclul de procesare tipic. Mărimea fiecărui cuvânt-cheie va fi dată de o construcție a formularului cuvântul. adică instrumentele HTML convenționale. Veți obține ceva de genul:
Lucrul, desigur, este în formula pentru calcularea mărimii textului de dimensiune $ prin rating al etichetei $ tag ['rating']. Este ușor de explicat. În general, valoarea lui x. aparținând intervalului inițial [a, b]. pot fi convertite liniar în y. care aparțin intervalului de ieșire [c, d]. prin formula:
În cazul în care fiecare evaluare a regulate aparține intervalului [0, $ max] (slotul original), dar trebuie să „depășească“ el în dimensiunea textului în intervalul de [BASEFONT, BASEFONT + TAGSLEVEL * PTSTEP] (interval de ieșire), apoi, înlocuind valorile din formula , obținem
sau, după tăiere și rotunjire (deoarece toate dimensiunile fontului în puncte sunt numere întregi), vedem ce este scris în cod.