I have the following text, and I need to format it to read with php line by line and be able to store the info in a database, how can I do it with php?
Unfortunately the format that I receive is always like this... very uncomfortable to deal with with php
b'\r\nNombre de host: DESKTOP-5AB1DJ9\r\nNombre del sistema operativo: Microsoft Windows 10 Pro\r\nVersi\xa2n del sistema operativo:
10.0.19044 N/D Compilaci\xa2n 19044\r\nFabricante del sistema operativo: Microsoft Corporation\r\nConfiguraci\xa2n del sistema operativo: Estaci\xa2n de trabajo independiente\r\nTipo de compilaci\xa2n del sistema operativo: Multiprocessor Free\r\nPropiedad de: Usuario\r\nOrganizaci\xa2n registrada:
\r\nId. del producto: 00330-80000-00000-AA120\r\nFecha de instalaci\xa2n original: 27/09/2020, 8:19:08\r\nTiempo de arranque del sistema: 11/07/2022, 15:54:10\r\nFabricante del sistema: ASUSTeK COMPUTER INC.\r\nModelo el sistema: ZenBook UX533FD_UX533FD\r\nTipo de sistema: x64-based PC\r\nProcesador(es): 1 Procesadores instalados.\r\n
[01]: Intel64 Family 6 Model 142 Stepping 12 GenuineIntel ~1792 Mhz\r\nVersi\xa2n del BIOS: American Megatrends Inc. UX533FD.306, 16/10/2019\r\nDirectorio de Windows: C:\\Windows\r\nDirectorio de sistema: C:\\Windows\\system32\r\nDispositivo de arranque: \\Device\\HarddiskVolume1\r\nConfiguraci\xa2n regional del sistema: es;Espa\xa4ol (internacional)\r\nIdioma de entrada: es;Espa\xa4ol (tradicional)\r\nZona horaria: (UTC 01:00) Bruselas, Copenhague, Madrid, Par\xa1s\r\nCantidad total de memoria f\xa1sica: 16.198 MB\r\nMemoria f\xa1sica disponible: 4.145 MB\r\nMemoria virtual: tama\xa4o m\xa0ximo: 22.563 MB\r\nMemoria virtual: disponible: 3.330 MB\r\nMemoria virt
CodePudding user response:
I would just do a `str_replace for the escape sequence, then use one of the many ways to iterate over things line-by-line. Here’s one:
// Normalize
$data = str_replace('\r\n', PHP_EOL, $data);
// Allows for line-by-line
$fp = fopen("php://memory", 'r ');
fputs($fp, $data);
rewind($fp);
while($line = fgets($fp)){
echo $line;
}
fclose($fp);
Demo here: https://3v4l.org/S9XF7
Unfortunately, your data has some additional escaping that you’ll need to account for, but I think that might be better in a dedicated question.
CodePudding user response:
You can try this if you need a associative array
<?php
$data = "b'\r\nNombre de host: DESKTOP-5AB1DJ9\r\nNombre del sistema operativo: Microsoft Windows 10 Pro\r\nVersi\xa2n del sistema operativo:
10.0.19044 N/D Compilaci\xa2n 19044\r\nFabricante del sistema operativo: Microsoft Corporation\r\nConfiguraci\xa2n del sistema operativo: Estaci\xa2n de trabajo independiente\r\nTipo de compilaci\xa2n del sistema operativo: Multiprocessor Free\r\nPropiedad de: Usuario\r\nOrganizaci\xa2n registrada:
\r\nId. del producto: 00330-80000-00000-AA120\r\nFecha de instalaci\xa2n original: 27/09/2020, 8:19:08\r\nTiempo de arranque del sistema: 11/07/2022, 15:54:10\r\nFabricante del sistema: ASUSTeK COMPUTER INC.\r\nModelo el sistema: ZenBook UX533FD_UX533FD\r\nTipo de sistema: x64-based PC\r\nProcesador(es): 1 Procesadores instalados.\r\n
[01]: Intel64 Family 6 Model 142 Stepping 12 GenuineIntel ~1792 Mhz\r\nVersi\xa2n del BIOS: American Megatrends Inc. UX533FD.306, 16/10/2019\r\nDirectorio de Windows: C:\\Windows\r\nDirectorio de sistema: C:\\Windows\\system32\r\nDispositivo de arranque: \\Device\\HarddiskVolume1\r\nConfiguraci\xa2n regional del sistema: es;Espa\xa4ol (internacional)\r\nIdioma de entrada: es;Espa\xa4ol (tradicional)\r\nZona horaria: (UTC 01:00) Bruselas, Copenhague, Madrid, Par\xa1s\r\nCantidad total de memoria f\xa1sica: 16.198 MB\r\nMemoria f\xa1sica disponible: 4.145 MB\r\nMemoria virtual: tama\xa4o m\xa0ximo: 22.563 MB\r\nMemoria virtual: disponible: 3.330 MB\r\nMemoria virt";
$data = str_replace("b'", '', $data);
$data = explode("\r\n", $data);
$informacion = [];
foreach($data as $dato){
$dato = explode(":", $dato);
$informacion[$dato[0]] = $dato[1];
}
print_r($informacion);
Test it: https://3v4l.org/ZWBHi