Foros del Web » Programando para Internet » PHP »

Separación de cadena compleja

Estas en el tema de Separación de cadena compleja en el foro de PHP en Foros del Web. A ver si me puedo hacer entender. Esto tratando de separar una cadena que del mysql me llega asi: Código: Familia del microprocesador Familia de ...
  #1 (permalink)  
Antiguo 12/03/2014, 08:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 15 años, 7 meses
Puntos: 2
Separación de cadena compleja

A ver si me puedo hacer entender. Esto tratando de separar una cadena que del mysql me llega asi:


Código:
Familia del microprocesador
Familia de microprocesador: Intel Atom 
Modelo del microprocesador del equipo
Modelo de microprocesador: D510 
Tipo de memoria
Tipo de memoria: DDR3 
Capacidad Memoria
Capacidad Memoria: 4 GB 
Capacidad de la unidad de almacenamiento
Capacidad Almacenamiento: 500 GB 
Grafica integrada en placa
Grafica integrada en placa: Si 
Modelo de la tarjeta gráfica
Modelo de tarjeta gráfica: No 
Sistemas operativo instalado
Sistema Operativo: No 
Fabricantes del chipset grafico
Chipset Grafico: INTEL
Lo que necesito es que la cadena esa separarla de tal manera de armar un cuadro asi:


A ver si pueden ayudarme porque no tengo como separarlo con explode ya que no tengo como identificarle algunos campos separados.
  #2 (permalink)  
Antiguo 12/03/2014, 08:20
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 13 años, 6 meses
Puntos: 17
Respuesta: Separación de cadena compleja

Has probado realizar un while al resultado del sql y mediante tables en html visualizarlo?
__________________
Twitter: @ed33x
  #3 (permalink)  
Antiguo 12/03/2014, 08:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Separación de cadena compleja

Llega en un registro con saltos de linea?

Si haces explode por \n obtendras

Un array con
[0]->Familia del microprocesador
[1]->Familia de microprocesador: Intel Atom
[2]->Modelo del microprocesador del equipo
[3]->Modelo de microprocesador: D510
....

$arCadena=explode("\n",$cadena);

Los nodos pares 0,2,4,.... ya los tienes bien sobre los impares plicas explode por ":"...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 12/03/2014, 08:51
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Separación de cadena compleja

No probe el while, ese mysql que me llega no puedo tocarlo ni nada porque el cliente lo sube en masa desde una base que le da el proveedor.

Decis hacer explode del \n y luego del : ??

$arCadena=explode("\n",$cadena);
$arEspacio=explode(":",$espacio);

Algo asi? a eso le meto los td y tr?
  #5 (permalink)  
Antiguo 12/03/2014, 18:05
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Separación de cadena compleja

No se vé la imagen de cómo quieres el resultado...
Si lo quieres en una tabla lo puedes hacer así:

Código PHP:
<?php

$detalles 
'Familia del microprocesador
Familia de microprocesador: Intel Atom
Modelo del microprocesador del equipo
Modelo de microprocesador: D510
Tipo de memoria
Tipo de memoria: DDR3
Capacidad Memoria
Capacidad Memoria: 4 GB
Capacidad de la unidad de almacenamiento
Capacidad Almacenamiento: 500 GB
Grafica integrada en placa
Grafica integrada en placa: Si
Modelo de la tarjeta gráfica
Modelo de tarjeta gráfica: No
Sistemas operativo instalado
Sistema Operativo: No
Fabricantes del chipset grafico
Chipset Grafico: INTEL'
;

function 
toTable($detalles) {
    
ob_start();
    
?>
    <table>
        <?php foreach (explode("\n"$detalles) as $i => $detalle) : ?>
            <?php if ($i != 0) : ?>
                <?php list($campo$valor) = explode(': '$detalle); ?>
                <tr>
                    <td><?= $campo ?></td>
                    <td><?= $valor ?></td>
                </tr>
            <?php endif; ?>
        <?php endforeach; ?>
    </table>
    <?php
    
return ob_get_clean();
}

echo 
toTable($detalles);
  #6 (permalink)  
Antiguo 13/03/2014, 01:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Separación de cadena compleja

Faltaban las filas pares a doble columna, y claro los estilos que te lo dejo para ti....

Código PHP:
Ver original
  1. function toTable($detalles) {
  2.     ob_start();
  3.     ?>
  4.     <table>
  5.         <?php foreach (explode("\n", $detalles) as $i => $detalle) : ?>
  6.             <?php if ($i % 2 != 0) { ?>
  7.                 <?php list($campo, $valor) = explode(': ', $detalle); ?>
  8.                 <tr>
  9.                     <td><?= $campo ?></td>
  10.                     <td><?= $valor ?></td>
  11.                 </tr>
  12.             <?php }else{ ?>
  13.                  <tr>
  14.                      <td colspan="2"><?= $detalle ?></td>
  15.                  </tr>
  16.             <?php }?>
  17.         <?php endforeach; ?>
  18.     </table>
  19.     <?php
  20.     return ob_get_clean();
  21. }
  22.  
  23. echo toTable($detalles);


ob_start() Manual

Cita:
Advertencia Algunos servidores web (p.ej. Apache) cambian en directorio de trabajo de un script cuando se invoca a la función de llamada de retorno. Se puede cambiar de nuevo mediante, por ejemplo, chdir(dirname($_SERVER['SCRIPT_FILENAME'])) en la función de llamada de retorno.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/03/2014 a las 01:58
  #7 (permalink)  
Antiguo 07/04/2014, 14:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Separación de cadena compleja

Por alguna razón no me fuinciona... he tardado en responder porque no habia llegao a este punto de programación pero mira:

Código PHP:
Ver original
  1. <?php
  2.         $detalles = $producto['Cualidad'];
  3.         function toTable($detalles) {
  4.         ob_start();
  5.         ?>
  6.         <table>
  7.             <?php foreach (explode("\n", $detalles) as $i => $detalle) : ?>
  8.                 <?php if ($i % 2 != 0) { ?>
  9.                     <?php list($campo, $valor) = explode(': ', $detalle); ?>
  10.                     <tr>
  11.                         <td><?php $campo ?></td>
  12.                         <td><?php $valor ?></td>
  13.                     </tr>
  14.                 <?php }else{ ?>
  15.                      <tr>
  16.                          <td colspan="2"><?php $detalle ?></td>
  17.                      </tr>
  18.                 <?php }?>
  19.             <?php endforeach; ?>
  20.         </table>
  21.         <?php
  22.         return ob_get_clean();
  23.     }
  24.      
  25.     echo toTable($detalles);
  26.     ?>


Ese código me tira:

Código HTML:
Ver original
  1.                                                  <tr>
  2.                          <td colspan="2"></td>
  3.                      </tr>
  4.                                                                                     <tr>
  5.                         <td></td>
  6.                         <td></td>
  7.                     </tr>
  8.                                                                  <tr>
  9.                          <td colspan="2"></td>
  10.                      </tr>
  11.                                                                                     <tr>
  12.                         <td></td>
  13.                         <td></td>
  14.                     </tr>
  15.                                                                  <tr>
  16.                          <td colspan="2"></td>
  17.                      </tr>
  18.                                                                                     <tr>
  19.                         <td></td>
  20.                         <td></td>
  21.                     </tr>
  22.                                                                  <tr>
  23.                          <td colspan="2"></td>
  24.                      </tr>
  25.                                                                                     <tr>
  26.                         <td></td>
  27.                         <td></td>
  28.                     </tr>
  29.                                                                  <tr>
  30.                          <td colspan="2"></td>
  31.                      </tr>
  32.                                                                                     <tr>
  33.                         <td></td>
  34.                         <td></td>
  35.                     </tr>
  36.                                                                  <tr>
  37.                          <td colspan="2"></td>
  38.                      </tr>
  39.                                                                                     <tr>
  40.                         <td></td>
  41.                         <td></td>
  42.                     </tr>
  43.                                                                  <tr>
  44.                          <td colspan="2"></td>
  45.                      </tr>
  46.                                                                                     <tr>
  47.                         <td></td>
  48.                         <td></td>
  49.                     </tr>
  50.                                                                  <tr>
  51.                          <td colspan="2"></td>
  52.                      </tr>
  53.                                                                                     <tr>
  54.                         <td></td>
  55.                         <td></td>
  56.                     </tr>
  57.                                                                  <tr>
  58.                          <td colspan="2"></td>
  59.                      </tr>
  60.                                                                                     <tr>
  61.                         <td></td>
  62.                         <td></td>
  63.                     </tr>
  64.                                                                  <tr>
  65.                          <td colspan="2"></td>
  66.                      </tr>
  67.                                                                                     <tr>
  68.                         <td></td>
  69.                         <td></td>
  70.                     </tr>
  71.                                     </table>


Todo en blanco me sale :(
  #8 (permalink)  
Antiguo 08/04/2014, 01:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Separación de cadena compleja

$detalles = $producto['Cualidad']; ???

Contiene el texto?

Intenta

Código PHP:
Ver original
  1. $detalles = $producto['Cualidad'];
  2. echo $detalles;

a ver que muestra
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 08/04/2014, 07:59
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Separación de cadena compleja

Muestra algo así:

Código PHP:
Ver original
  1. Familia del microprocesador
  2. Familia de microprocesador: Intel Core i7
  3. Modelo del microprocesador del equipo
  4. Modelo de microprocesador: No
  5. Frecuencia del reloj del microprocesador en ciclos/segundo
  6. Frecuencia del reloj: 2.0 GHz
  7. Capacidad Memoria
  8. Capacidad Memoria: 8 GB
  9. Capacidad de la unidad de almacenamiento
  10. Capacidad Almacenamiento: 256 GB
  11. Tamaño de la pantalla en pulgadas
  12. Tamaño de la pantalla: 15.4''
  13. Sistemas operativo instalado
  14. Sistema Operativo: Mac OS
  15. Fabricantes del chipset grafico
  16. Chipset Grafico: INTEL
  #10 (permalink)  
Antiguo 08/04/2014, 16:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Separación de cadena compleja

Que dices?

Etiquetas: cadena, compleja, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:11.