Función print_r a arreglo
Les comparto esta función que permite pasar de una cadena generada de print_r hacia un arreglo
modo de uso
$cadena="Array
(
[PAC] => Array
(
[usuario] => DEMO700101XXX
[pass] => DEMO700101XXX
[produccion] => NO
)
[conf] => Array
(
[cer] => ../../certificados/lan7008173r5.cer.pem
[key] => ../../certificados/lan7008173r5.key.pem
[pass] => 12345678a
)
[version_cfdi] => 3.3
[cfdi] => C:\SDK2\timbrados\ejemplo_arrendamiento.xml
[xml_debug] => C:\SDK2\timbrados\debug_ejemplo_arrendamiento.xml
[php_openssl] => SI
[factura] => Array
(
[serie] => A
[folio] => 100
[fecha_expedicion] => 2019-05-10T09:10:19
[metodo_pago] => PUE
[forma_pago] => 01
[tipocomprobante] => I
[moneda] => MXN
[tipocambio] => 1.0
[LugarExpedicion] => 27000
[RegimenFiscal] => 601
[subtotal] => 1000
[total] => 840
)
[emisor] => Array
(
[rfc] => LAN7008173R5
[nombre] => ACCEM SERVICIOS EMPRESARIALES SC
)
[receptor] => Array
(
[rfc] => SOHM7509289MA
[nombre] => MIGUEL ANGEL SOSA HERNANDEZ
[UsoCFDI] => P01
)
[conceptos] => Array
(
[0] => Array
(
[ClaveProdServ] => 84111506
[cantidad] => 1
[unidad] => NO APLICA
[ClaveUnidad] => ACT
[descripcion] => RENTA DE OFICINA MAYO 2014
[valorunitario] => 1000.00
[importe] => 1000.00
[CuentaPredial] => Array
(
[Numero] => 12345678
)
[Impuestos] => Array
(
[Traslados] => Array
(
[0] => Array
(
[Base] => 1000.00
[Impuesto] => 002
[TasaOCuota] => 0.160000
[Importe] => 160.00
[TipoFactor] => Tasa
)
)
[Retenciones] => Array
(
[0] => Array
(
[Impuesto] => 002
[Importe] => 160.00
[Base] => 1000.00
[TasaOCuota] => 0.160000
[TipoFactor] => Tasa
)
[1] => Array
(
[Impuesto] => 001
[Importe] => 160.00
[Base] => 1000.00
[TasaOCuota] => 0.160000
[TipoFactor] => Tasa
)
)
)
)
)
[impuestos] => Array
(
[TotalImpuestosTrasladados] => 160.00
[TotalImpuestosRetenidos] => 320.00
[translados] => Array
(
[0] => Array
(
[Impuesto] => 002
[TasaOCuota] => 0.160000
[Importe] => 160.00
[TipoFactor] => Tasa
)
)
[retenciones] => Array
(
[0] => Array
(
[Impuesto] => 002
[importe] => 160.00
)
[1] => Array
(
[impuesto] => 001
[importe] => 160.00
)
)
)
)";
$arreglo=print_r_reverza($cadena);
y listo....
IMPORTANTE: esta primer version no es compatible si el valor tiene comillas, parentesis, palabra array , llaves o [ ]
function print_r_reverza($cadena)
{
$cadena=str_replace("\r",'',$cadena);
$renglones=explode("\n",$cadena);
$linea_con_coma=true;
$cadena_final='$datos=';
foreach($renglones AS $renglon)
{
if(strlen($renglon)<1)
continue;
if($renglon=='(' OR $renglon==')' OR $renglon=='Array' )
{
$linea_con_coma=false;
}
else
{
$linea_con_coma=true;
}
if(strpos($renglon,'=>'))
{
$renglon=formato_renglon($renglon);
}
else
{
$renglon=str_replace('"Array",','array ',$renglon);
$renglon=str_replace('Array','array',$renglon);
// echo "$renglon<br/>";
}
if($linea_con_coma==true)
{
$cadena_final.="$renglon\",";
}
else
{
$cadena_final.="$renglon\n";
}
$cadena_final=str_replace(',)',')',$cadena_final);
}
$cadena_final="$cadena_final;";
$cadena_final=str_replace(' ',' ',$cadena_final);
$cadena_final=str_replace(' ',' ',$cadena_final);
$cadena_final=str_replace(' ',' ',$cadena_final);
$cadena_final=str_replace(' ',' ',$cadena_final);
$cadena_final=str_replace(' ',' ',$cadena_final);
$cadena_final=str_replace(' ',' ',$cadena_final);
$cadena_final=str_replace(' ',' ',$cadena_final);
$cadena_final=str_replace('"Array",','array ',$cadena_final);
$cadena_final=str_replace('"Array,','array ',$cadena_final);
$cadena_final=str_replace('(",','(',$cadena_final);
$cadena_final=str_replace(', )"',')',$cadena_final);
eval($cadena_final);
return $datos;
}
function formato_renglon($renglon)
{
$renglon=str_replace('=> ','=> "',$renglon);
$renglon=str_replace('[','"',$renglon);
$renglon=str_replace(']','"',$renglon);
return $renglon;
}