elmascato
Gamma
Verificación en dos pasos activada
Hola Compañeros,
Estoy en un proyecto donde se me requiere parsear unos docx, doc, odt, etc de tests de exámenes para guardarlos en una base de datos y poder publicar las preguntas en tests interactivos.
Después de buscar la mejor manera de hacerlo, decidí por la conversión en bloque de estos archivos a formato txt ya que, para parsear, me parece mejor que intentarlo hacer con los otros formatos.
El formato es el siguiente:
1 Esta es una pregunta del test
a. Esta es la primera respuesta
b. Esta es la segunda respuesta
c. Esta es la tercera respuesta
Creo el array de preguntas de la siguiente manera:
if((!preg_match('/^[a-z][a-z_\-0-9]*/i', $result)&&(preg_replace('/\s+/', '', $result)))){
if(preg_match("/^[1-9]|[1-9][0-9\s]|/",$result))
{
$i++;
$new_str = preg_replace('/^\d+\s+/', '', $result);
$docCollect[$i] = (
[
'pregunta' => strip_tags($new_str)
]
);
}
}
El problema es el siguiente:
Las preguntas y sus diferentes respuestas vienen todas juntas, gracias a las expresiones regulares, más o menos lo tengo controlado, pero la lista de respuesta viene abajo de todo en el texto de esta forma:
RESPUESTAS
1A
2B
3C
En otros archivos incluso:
RESPUESTAS
1A 4A
2B 5C
3C 6B
Lo primero, sería dejar de parsear al llegar a la línea RESPUESTAS, ya que, con la expresión regular actual, al empezar por número, las respuestas me las guarda como preguntas.
Lo segundo, ya que estáis 🤣 🤣 sería una buena expresión regular para añadir las respuestas a b c en el array de preguntas.
Muchas gracias por su atención y un cordial saludo compañeros!
Estoy en un proyecto donde se me requiere parsear unos docx, doc, odt, etc de tests de exámenes para guardarlos en una base de datos y poder publicar las preguntas en tests interactivos.
Después de buscar la mejor manera de hacerlo, decidí por la conversión en bloque de estos archivos a formato txt ya que, para parsear, me parece mejor que intentarlo hacer con los otros formatos.
El formato es el siguiente:
1 Esta es una pregunta del test
a. Esta es la primera respuesta
b. Esta es la segunda respuesta
c. Esta es la tercera respuesta
Creo el array de preguntas de la siguiente manera:
if((!preg_match('/^[a-z][a-z_\-0-9]*/i', $result)&&(preg_replace('/\s+/', '', $result)))){
if(preg_match("/^[1-9]|[1-9][0-9\s]|/",$result))
{
$i++;
$new_str = preg_replace('/^\d+\s+/', '', $result);
$docCollect[$i] = (
[
'pregunta' => strip_tags($new_str)
]
);
}
}
El problema es el siguiente:
Las preguntas y sus diferentes respuestas vienen todas juntas, gracias a las expresiones regulares, más o menos lo tengo controlado, pero la lista de respuesta viene abajo de todo en el texto de esta forma:
RESPUESTAS
1A
2B
3C
En otros archivos incluso:
RESPUESTAS
1A 4A
2B 5C
3C 6B
Lo primero, sería dejar de parsear al llegar a la línea RESPUESTAS, ya que, con la expresión regular actual, al empezar por número, las respuestas me las guarda como preguntas.
Lo segundo, ya que estáis 🤣 🤣 sería una buena expresión regular para añadir las respuestas a b c en el array de preguntas.
Muchas gracias por su atención y un cordial saludo compañeros!

