Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
ejemplo.php
Tab = 4 espacios
1
<?php
// Catálogo de productos o cursos
$catalogo = [
    'Aprende PHP 8.3 desde cero',
    'Domina C++ [v2.0] para videojuegos',
    'Desarrollo Web Fullstack con React',
    'Guía de precios: $100.00 a $500.00 USD'
];

// Término de búsqueda introducido por un usuario (contiene metacaracteres: +, [, ], .)
$terminoUsuario = "C++ [v2.0]";

echo "<div style='font-family:system-ui; max-width:620px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>🔍 Búsqueda Segura con preg_quote()</h3>";
echo "<p style='color:#64748b; font-size:13px;'>Término introducido por el usuario: <code>" . htmlspecialchars($terminoUsuario) . "</code></p>";

// 1. Demostración del escape automático
$terminoEscapado = preg_quote($terminoUsuario, '/');
echo "<div style='background:#f1f5f9; padding:10px 14px; border-radius:6px; font-family:monospace; margin-bottom:15px; font-size:13px;'>";
echo "  <strong>Cadena escapada:</strong> " . htmlspecialchars($terminoEscapado);
echo "</div>";

// 2. Construcción segura del patrón de búsqueda insensible a mayúsculas
$patron = '/' . $terminoEscapado . '/i';

echo "<h4 style='color:#1e293b; margin-bottom:10px;'>Resultados en el catálogo:</h4>";
$encontrados = 0;

foreach ($catalogo as $item) {
    if (preg_match($patron, $item)) {
        $encontrados++;
        // Resaltar visualmente la coincidencia en el texto
        $resaltado = preg_replace($patron, '<mark style="background:#fef08a; padding:2px 4px; border-radius:3px; font-weight:bold;">$0</mark>', $item);
        echo "<div style='background:#ecfdf5; border:1px solid #a7f3d0; padding:10px 14px; border-radius:6px; margin-bottom:8px;'>";
        echo "  🎯 $resaltado";
        echo "</div>";
    }
}

if ($encontrados === 0) {
    echo "<p style='color:#64748b;'>No se encontraron coincidencias.</p>";
}

echo "</div>";
Haz clic para editar este código
Vista Previa
Servidor PHP 8.3