1
<?php
// Cadena de texto recibida desde un sistema contable o correo
$textoFactura = "Orden procesada exitosamente. Factura N° FAC-98421 por un total de USD 4,850.50 con tarjeta de crédito.";
// Patrón con 3 grupos de captura: (Código Factura), (Moneda) y (Monto)
$patron = '/Factura N° (FAC-\d+) por un total de ([A-Z]{3})\s+([\d,]+\.\d{2})/';
echo "<div style='font-family:system-ui; max-width:620px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>🧾 Procesamiento de Factura con preg_match()</h3>";
$resultado = preg_match($patron, $textoFactura, $coincidencias);
if ($resultado === 1) {
echo "<div style='background:#ecfdf5; border:1px solid #a7f3d0; border-radius:8px; padding:15px; margin-bottom:15px;'>";
echo " <p style='margin:0 0 8px 0; color:#065f46; font-weight:bold;'>✅ Coincidencia encontrada con éxito:</p>";
echo " <p style='margin:4px 0; color:#1e293b;'><strong>Coincidencia Completa (\$matches[0]):</strong> <code style='background:#fff; padding:2px 6px; border-radius:4px;'>{$coincidencias[0]}</code></p>";
echo " <hr style='border:none; border-top:1px solid #d1fae5; margin:10px 0;'>";
echo " <ul style='margin:0; padding-left:20px; color:#1e293b;'>";
echo " <li><strong>Número de Factura (\$matches[1]):</strong> <span style='color:#0284c7; font-weight:bold;'>{$coincidencias[1]}</span></li>";
echo " <li><strong>Divisa Monetaria (\$matches[2]):</strong> <span style='color:#7c3aed; font-weight:bold;'>{$coincidencias[2]}</span></li>";
echo " <li><strong>Importe Total (\$matches[3]):</strong> <span style='color:#059669; font-weight:bold;'>\${$coincidencias[3]}</span></li>";
echo " </ul>";
echo "</div>";
// Convertir el monto a flotante nativo de PHP para cálculos
$montoLimpio = (float)str_replace(',', '', $coincidencias[3]);
echo "<p style='color:#64748b; font-size:13px;'>💡 Monto casteado a float para operaciones matemáticas: <strong>" . var_export($montoLimpio, true) . "</strong></p>";
} elseif ($resultado === 0) {
echo "<p style='color:#dc2626;'>❌ El texto no contiene el formato de factura esperado.</p>";
} else {
echo "<p style='color:#dc2626;'>⚠️ Ocurrió un error en la compilación del patrón PCRE.</p>";
}
echo "</div>";
Haz clic para editar este código