Ver Mensaje Individual
  #11 (permalink)  
Antiguo 24/11/2010, 15:21
Avatar de metacortex
metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: Problema con array

Cita:
Iniciado por Nano_ Ver Mensaje
Se me ocurre que podrías manejarlo de la siguiente manera:
Nano_, muchas gracias hombre. El código funciona a la perfección y además te fuiste por una vía que ni siquiera se me pasó por la cabeza. Cuando lo implementé anoche estuve un rato viendo cómo lo hiciste y francamente recibí una buena lección. Gracias hermano.

Abimael -como siempre- me dejó con la boca abierta. Código más reducido imposible. Mis respetos compa, muchas gracias. Algún día haré vainas así jejeje. Me encantó cómo además agrupas singular/plural. Aunque actualmente estoy probando full con éste, la cosa quedó así por ahora:

Código PHP:
Ver original
  1. $archivo = str_replace( basename($_SERVER['PHP_SELF']) , '' , $_SERVER['SCRIPT_FILENAME']) . '/lang/prueba.po';
  2. $leer = file($archivo, FILE_IGNORE_NEW_LINES);
  3. $html = null;
  4. $htm = null;
  5. $txt = null;
  6. $cont = 0;
  7. foreach($leer as $l) {
  8.     $valor[$cont] = null;
  9.     $txt = explode(' ' , $l);
  10.     switch($txt[0]) {
  11.         case 'msgid':
  12.             $html[$cont] = $l;
  13.         break;
  14.         case 'msgstr':
  15.             $html[$cont] = $l;
  16.         break;
  17.         case 'msgstr[0]':
  18.             // validacion  si la posicion anterior es msgid_plurarl
  19.             if($valor[$cont-1] == "msgid_plural"){
  20.                 $html[$cont] = $html[$cont-1];
  21.                 $html[$cont-1] = $l;
  22.             } else
  23.                 $html[$cont] = $l;
  24.         break;
  25.         case 'msgid_plural':
  26.             $html[$cont] = $l;
  27.             $valor[$cont] = "msgid_plural";
  28.         break;
  29.         case 'msgstr[1]':
  30.             $html[$cont] = $l;
  31.         break;
  32.     }
  33.     $cont++;
  34. }

Ésta es la salida HTML en la que estoy trabajando. Es un desastre por ahora pero va bien:

Código PHP:
Ver original
  1. foreach($html as $k => $h) {
  2.  
  3.     //$h = trim($h , '"');
  4.  
  5.     $v = explode(' ' , $h);
  6.     $o = array_slice($v, 1);
  7.     $e = implode (' ' , $o);
  8.     $e = htmlspecialchars(trim($e , '"'));
  9.  
  10.     // $reemp = array('msgid_plural' => 'PO' , 'msgstr' => 'T' , 'msgid' => 'O' , 'msgstr[1]' => 'PT' , 'msgstr[0]' => 'TS');
  11.     $reemp2 = array('msgid_plural' => 'Plural' , 'msgid' => 'Singular' );
  12.     // $v1 = strtr($v[0] , $reemp);
  13.     $v2 = strtr($v[0] , $reemp2);
  14.  
  15.     if(!empty($e)) {
  16.         if($v1 == 'O' or $v1 == 'PO' )
  17.             echo '
  18.        <tr>
  19.            <td class="tipo">'. $v2 .'</td>
  20.            <td class="original">
  21.                <p>'. $e .'</p>
  22.            </td>';
  23.         if($v1 == 'T' or $v1 == 'TS' or $v1 == 'PT' )
  24.             echo '
  25.            <td>
  26.                <div id="dato-'. $k .'">'. $e .'</div>
  27.            </td>
  28.        </tr>';
  29.     }
  30. }