Bueno a estas alturas me decanté por la propuesta de las expresiones regulares. Le agregué la
clave porque lo utilizaré para fijar la línea del archivo donde se va a escribir la línea:
Código PHP:
Ver originalforeach($leer as $k => $l){
if(!empty($m[1])){ $arr[$n][$m[1]] = $k + 1 .' '. $m[0]; $bool = false; } elseif(!$bool && empty($m[1])){ $bool = true; $n++; } }
Cada array resultante luce de esta forma:
Código PHP:
Ver original (
[msgid] => 28 msgid "No media attachments found."
[msgstr] => 29 msgstr "No hay archivos que mostrar."
)
Ahora bien, se hizo necesario extraer info por separado de cada línea para convertirla en datos que pueda usar. Hice el
foreach para que se reconociera cada array (y sus elementos) como una iteración individual y -aquí creo que está el error-
un bucle interno for para meterle el preg_match_all y separar por fin los datos:
Código PHP:
Ver originalforeach($arr as $a) {
for ($i = 0; $i < count($values); $i++) { preg_match_all('/^(.*?) (.*?) "(.*?)"/i', $values[$i], $salida, PREG_SET_ORDER
); }
}
Cada iteración me devuelve lo esperado. Este print lo hice desde dentro del
for (se muestra todo el array correctamente):
Código PHP:
Ver original(
(
[0] => 29 msgstr "No hay archivos que mostrar."
[1] => 29
[2] => msgstr
[3] => No hay archivos que mostrar.
)
)
Pero el HTML debo construirlo desde el
foreach y ahí se jode todo porque los datos comienzan a mostrarse de esa forma acumulativa (esa que va creciendo y en la última celda tiene toda la información junta).
El HTML se genera con las repeticiones correctas, pero tiene ese defecto en el contenido. Las variables quedaron definidas así:
Código PHP:
Ver original$linea .= $salida[0][1];
$tipo .= $salida[0][2];
$titulo .= $salida[0][2] == 'msgid' ? $salida[0][3] : null;
$titulo_p .= $salida[0][2] == 'msgid_plural' ? $salida[0][3] : null;
$txt_s .= $salida[0][2] == 'msgstr[0]' ? $salida[0][3] : null;
$txt .= $salida[0][2] == 'msgstr' ? $salida[0][3] : $txt_s;
$txt_p .= $salida[0][2] == 'msgstr[1]' ? $salida[0][3] : null;
Y si las saco del
for para colocarlas en el
foreach (donde está el HTML que debe repetirse) entonces no funcionan. Ese es el problema.
Quisiera saber qué estoy haciendo mal. Los datos separados son necesarios para procesarlos debidamente pero -como obra de Satanás- viene a aparecer ese error cuando todo está casi hecho. Desde luego ya le he dado un montón de vueltas.