Nube de tags I

Esta aplicación mostrará las palabras de este texto sin repetirlas, y les aplicará un tamaño proporcional a las veces que aparezcan en ese texto.

1- Almacenar el texto que queremos convertir en una variable. Nuestra herramienta se vale de un simple formulario para enviar los datos a la misma página:

<form method=»post» action=»#»>
Insertar texto: <textarea name=»textarea» height=»»></textarea>
<input type=»submit» value=»Generar»>
</form>

<?php
$text=$_POST[‘textarea’];
?>

2- Limpiamos el texto $text de caracteres que no sean números ni letras:

$text=ereg_replace(«[^A-Za-z0-9ñÑáéíóúÁÉÍÓÚÜü]», » «, $text);

Esta instrucción reemplaza todos los caracteres que NO sean las letras mayúsculas, las minúsculas, los números del 0 al 9, la ñ, la Ñ y las vocales con tildes y diéresis.

3- Convertirlo en un array con las función explode, usando el espacio como separador. Esta matriz estará compuesta por palabras sueltas:

$text=explode(» «,$text);

4- Nos interesa saber cuántas palabras tenemos en total, para los bucles:

$numero=count($text);

5- Crear otra matriz con los elementos no repetidos de la anterior, y averiguar también su tamaño:

$text2=array_unique($text);
$numero2=count($text2);

6- Ahora construiremos dos bucles for: el primero es para el tamaño de las palabras, que irá incluido entre etiquetas style, dentro de la cabecera del HTML. No hemos usado un archivo externo para hacer más sencillo el proceso.
Primer bucle, para el estilo:

…<head>…<style type=»text/css»>
<?php
for ($n=0;$n<=$numero2;$n++) {
if ($text2[$n]) { // elementos de array sin repeticiones
$palabra=$text2[$n]; // renombramos variable
$vez=substr_count($text, $palabra); // veces que aparece en el primer array
if ($vez>=2) { //si aparece dos veces o más…
$vez=$vez*3; // si no multiplicamos, veremos letras demasiado pequeñas
echo «.t».$vez.» {font-size:».$vez.»pt}»; // estilo generado
}
}
}
?>
</style>

Segundo bucle, para mostrar la nube (muy parecido al anterior):

<?php
for ($n=0;$n<=$numero;$n++) {
if ($text2[$n]) {
$palabra=$text2[$n];
$vez=substr_count($text, $palabra);
if ($vez>=2) {
$vez=$vez*3;
echo «<span class=»t».$vez.»»>».$palabra.»</span>»;
echo «<br>»;
}
}
}
>

El ejemplo completo y ordenado para hacer pruebas:

<html>

<?php
$text=$_POST[‘textarea’];
$text=ereg_replace(«[^A-Za-z0-9ñÑáéíóúÁÉÍÓÚÜü]», » «, $text);
$text=explode(» «,$text);
$numero=count($text);
$text2=array_unique($text);
$numero2=count($text2);
?>

<head>
<style type=»text/css»>

<?php
for ($n=0;$n<=$numero2;$n++) {
if ($text2[$n]) {
$palabra=$text2[$n];
$vez=substr_count($text, $palabra);
if ($vez>=2) {
$vez=$vez*3;
echo «.t».$vez.» {font-size:».$vez.»pt}»;
}
}
}
?>

</style>
</head>
<body>

<form method=»post» action=»#»>
Insertar texto: <extarea name=»textarea» height=»»></textarea>
<input type=»submit» value=»Generar»>
</form>

<?php
for ($n=0;$n<=$numero2;$n++) {
if ($text2[$n]) {
$palabra=$text2[$n];
$vez=substr_count($text, $palabra);
if ($vez>=2) {
$vez=$vez*3;
echo «.t».$vez.» {font-size:».$vez.»pt}»;
}
}
}
?>

</body>
</html>

Write a Reply or Comment

Your email address will not be published.