1
<?php
function crearSlugAmigable(string $titulo): string
{
// 1. Convertir a minúsculas en UTF-8
$slug = mb_strtolower(trim($titulo), 'UTF-8');
// 2. Transliterar caracteres acentuados básicos del español
$acentos = ['á' => 'a', 'é' => 'e', 'í' => 'i', 'ó' => 'o', 'ú' => 'u', 'ñ' => 'n'];
$slug = strtr($slug, $acentos);
// 3. Reemplazar cualquier carácter que NO sea letra o número por un guion
$slug = preg_replace('/[^a-z0-9]+/i', '-', $slug);
// 4. Eliminar guiones duplicados consecutivos (ej: '---' pasa a '-')
$slug = preg_replace('/-+/', '-', $slug);
// 5. Eliminar guiones sobrantes al inicio o al final
return trim((string)$slug, '-');
}
$titulosPrueba = [
"¡Aprende Programación Orientada a Objetos en PHP 8.3!",
"Descuento del 50% en Hosting SSD (Solo por hoy)",
"¿Cómo usar Docker, Kubernetes & CI/CD en 2026?",
" Espacios extraños y símbolos: @#$%&* "
];
echo "<div style='font-family:system-ui; max-width:640px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>🔗 Generador de Slugs con preg_replace()</h3>";
foreach ($titulosPrueba as $titulo) {
$slugGenerado = crearSlugAmigable($titulo);
echo "<div style='background:#f8fafc; border:1px solid #cbd5e1; border-radius:6px; padding:10px 14px; margin-bottom:10px;'>";
echo " <div style='color:#64748b; font-size:12px;'>Título Original:</div>";
echo " <div style='color:#1e293b; font-weight:600; font-size:14px;'>" . htmlspecialchars($titulo) . "</div>";
echo " <div style='margin-top:6px; color:#0284c7; font-family:monospace; font-size:13px;'>";
echo " <strong>URL Slug:</strong> https://kilopolis.com/articulos/<span style='background:#e0f2fe; padding:2px 6px; border-radius:4px; font-weight:bold;'>$slugGenerado</span>";
echo " </div>";
echo "</div>";
}
echo "</div>";
Haz clic para editar este código