de un archivo --- */
function leerTitulo($ruta) {
$contenido = @file_get_contents($ruta, false, null, 0, 16384);
if ($contenido === false) return '';
if (preg_match('/]*>(.*?)/is', $contenido, $m)) {
$t = trim(preg_replace('/\s+/', ' ', $m[1]));
if (function_exists('mb_detect_encoding') && !mb_detect_encoding($t, 'UTF-8', true)) {
$t = mb_convert_encoding($t, 'UTF-8', 'ISO-8859-1');
}
return html_entity_decode($t, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
return '';
}
/* --- Quita tildes y pasa a minúsculas para comparar --- */
function normalizar($s) {
$s = function_exists('mb_strtolower') ? mb_strtolower($s, 'UTF-8') : strtolower($s);
return strtr($s, ['á'=>'a','é'=>'e','í'=>'i','ó'=>'o','ú'=>'u','ü'=>'u','ñ'=>'n']);
}
/* --- Categorías: palabras clave, color e ícono --- */
$categorias = [
'matematica' => ['nombre'=>'Matemática', 'icono'=>'🔢', 'color'=>'#ff5e7e', 'color2'=>'#ffb199',
'claves'=>['matem','mate_','suma','resta','multiplic','divis','fraccion','numero','tabla','geometr','calcul','conteo','contar','figura','sumar','restar']],
'lenguaje' => ['nombre'=>'Lenguaje', 'icono'=>'📖', 'color'=>'#4facfe', 'color2'=>'#00f2fe',
'claves'=>['lenguaje','letra','lectura','leer','palabra','silaba','ortograf','vocal','abecedario','abc','cuento','escrit','comprension','verbo','sustantivo','adjetivo']],
'ingles' => ['nombre'=>'Inglés', 'icono'=>'🇬🇧', 'color'=>'#a16bfe', 'color2'=>'#deb0df',
'claves'=>['ingles','english','colors','numbers','animals','vocabulary','words','spelling','fruits','family']],
'ciencias' => ['nombre'=>'Ciencias', 'icono'=>'🔬', 'color'=>'#43e97b', 'color2'=>'#38f9d7',
'claves'=>['ciencia','cuerpo','planeta','sistema solar','planta','naturaleza','agua','energia','experimento','dinosaur','ecosistema','animal']],
'historia' => ['nombre'=>'Historia y Geografía', 'icono'=>'🌎', 'color'=>'#f7971e', 'color2'=>'#ffd200',
'claves'=>['historia','geograf','chile','mapa','region','pueblo','continente','bandera','patria']],
'arte' => ['nombre'=>'Arte y Música', 'icono'=>'🎨', 'color'=>'#f857a6', 'color2'=>'#ff9a8b',
'claves'=>['arte','musica','pintar','dibuj','color','instrumento','cancion']],
'otros' => ['nombre'=>'Más Juegos', 'icono'=>'🎮', 'color'=>'#11998e', 'color2'=>'#7ce0b3',
'claves'=>[]],
];
function categorizar($texto, $categorias) {
$t = normalizar($texto);
foreach ($categorias as $clave => $cat) {
foreach ($cat['claves'] as $palabra) {
if (strpos($t, $palabra) !== false) return $clave;
}
}
return 'otros';
}
/* --- Animales para las tarjetas --- */
$animales = ['🦁','🐯','🐼','🐨','🐸','🐵','🦊','🐰','🐻','🐶','🐱','🦒','🐘','🦓','🐧','🐢','🦉','🐬','🐙','🦋','🐞','🐝','🦄','🐳','🦜','🐿️','🦔','🐹'];
/* --- Recorrer archivos --- */
$juegos = [];
foreach ($categorias as $k => $c) $juegos[$k] = [];
$archivos = array_merge(glob($dir . '/*.html') ?: [], glob($dir . '/*.htm') ?: [], glob($dir . '/*.php') ?: []);
foreach ($archivos as $ruta) {
$archivo = basename($ruta);
if ($archivo === $self) continue;
$titulo = leerTitulo($ruta);
if ($titulo === '') {
$titulo = ucfirst(str_replace(['_','-'], ' ', pathinfo($archivo, PATHINFO_FILENAME)));
}
$cat = categorizar($titulo . ' ' . $archivo, $categorias);
$juegos[$cat][] = [
'archivo' => $archivo,
'titulo' => $titulo,
'animal' => $animales[abs(crc32($archivo)) % count($animales)],
];
}
foreach ($juegos as &$lista) {
usort($lista, function($a, $b) { return strnatcasecmp($a['titulo'], $b['titulo']); });
}
unset($lista);
$total = array_sum(array_map('count', $juegos));
function h($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); }
?>
Juegos Educativos | Colegio Suyai
PHP
📅 21-10-2026 13:03