1
<?php
echo "<div style='font-family:system-ui; max-width:640px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>🩺 Diagnóstico y Depuración en PCRE (PHP 8)</h3>";
// 1. Simulación de Error: Caracteres UTF-8 corruptos con modificador /u
$byteInvalido = "Texto con byte roto \xFF\xFE";
$patronUtf8 = '/^[a-z]+$/u';
$resultado1 = @preg_match($patronUtf8, $byteInvalido);
if ($resultado1 === false) {
$codigoError = preg_last_error();
$mensajeError = preg_last_error_msg();
echo "<div style='background:#fef2f2; border:1px solid #fecaca; border-left:4px solid #ef4444; padding:12px; border-radius:6px; margin-bottom:15px;'>";
echo " <strong style='color:#991b1b;'>⚠️ Error Detectado en PCRE:</strong><br>";
echo " <span style='color:#1e293b; font-size:13px;'>Código de Error Constante: <code>$codigoError</code> (PREG_BAD_UTF8_ERROR)</span><br>";
echo " <span style='color:#b91c1c; font-weight:bold; font-size:13px;'>Mensaje descriptivo: $mensajeError</span>";
echo "</div>";
}
// 2. Patrón Optimizado con Cuantificador Posesivo (Sin Backtracking)
$textoExtenso = "user_account_identifier_with_clean_tokens_2026";
// Versión normal (permite retroceso)
$patronNormal = '/^(\w+)+$/';
// Versión posesiva (cero retroceso, inmune a ReDoS)
$patronPosesivo = '/^\w++$/';
$tInicio = microtime(true);
preg_match($patronPosesivo, $textoExtenso);
$tFin = microtime(true);
$tiempoMicrosegundos = round(($tFin - $tInicio) * 1000000, 2);
echo "<div style='background:#ecfdf5; border:1px solid #a7f3d0; border-left:4px solid #10b981; padding:12px; border-radius:6px;'>";
echo " <strong style='color:#065f46;'>✅ Patrón Seguro Posesivo (/^\\w++$/):</strong><br>";
echo " <span style='color:#1e293b; font-size:13px;'>Evaluó la cadena en <strong>{$tiempoMicrosegundos} µs</strong> sin crear puntos de retroceso innecesarios.</span>";
echo "</div>";
echo "</div>";
Haz clic para editar este código