Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: OssoH en 12 Julio 2018, 12:27 pm



Título: [Resuelto] Expresión regular. Obtener ancho x alto
Publicado por: OssoH en 12 Julio 2018, 12:27 pm
Tengo una cadena de texto y la idea es hacer una función php para que me extraiga el ancho y alto.
Había pensado utilizar patrones de búsqueda pero se me está atragantando.

Os pongo ejemplos de cadenas de texto donde el resultado en todos ellos deberia ser ancho=45 y alto =45

Ejemplo :
Almoralejos PXrla 45X45 2ºclase
Almoralejos PXrla 45 X 45 2ºclase
Almoralejos PXrla 45 x 45 2ºclase
Almoralejos PXrla 45X45 segunda clase
45X45 2ºclase Amoralejos PXrla

Gracias por cualquier sugerencia.


Título: Re: Expresión regular. Obtener ancho x alto
Publicado por: OssoH en 12 Julio 2018, 13:20 pm
Al final lo estoy haciendo usando varios bucles


Título: Re: Expresión regular. Obtener ancho x alto
Publicado por: WHK en 12 Julio 2018, 13:56 pm
Hola, eso puedes hacerlo con preg_match_all() de php. Que has intentado programar? tienes algo hecho para darle un vistazo y ver en que estás fallando?.

Prueba con /(\d+)X(\d+)/

Saludos.


Título: Re: Expresión regular. Obtener ancho x alto
Publicado por: OssoH en 13 Julio 2018, 16:05 pm
En ese caso por ejemplo la cadena
Almoralejos PXrla 45 x 45 2ºclase
no la detectaría porque tiene espacios a cada lado de la 'X'.

Pero no obstante gracias por tu sugerencia. Voy a investigar más lo de los patrones.


Título: Re: Expresión regular. Obtener ancho x alto
Publicado por: Shell Root en 13 Julio 2018, 16:55 pm
Siguiendo con el patrón de WHK, podría ser así...
Código:
 (\d+\s*)X(\s*\d+)

Almoralejos PXrla 45X45 2ºclase
Almoralejos PXrla 45 X 45 2ºclase
Almoralejos PXrla 45 x 45 2ºclase
Almoralejos PXrla 45X45 segunda clase
45X45 2ºclase Amoralejos PXrla
 
Creo que la X o x se puede solucionar con el flag /i, o pues al bruteforce
Código:
(\d+\s*)[X|x](\s*\d+)

 


Título: Re: Expresión regular. Obtener ancho x alto
Publicado por: srWhiteSkull en 13 Julio 2018, 17:51 pm
Siguiendo con el patrón de WHK, podría ser así...
Código:
 (\d+\s*)X(\s*\d+)

Almoralejos PXrla 45X45 2ºclase
Almoralejos PXrla 45 X 45 2ºclase
Almoralejos PXrla 45 x 45 2ºclase
Almoralejos PXrla 45X45 segunda clase
45X45 2ºclase Amoralejos PXrla
 
Creo que la X o x se puede solucionar con el flag /i, o pues al bruteforce
Código:
(\d+\s*)[X|x](\s*\d+)

Totalmente de acuerdo...

Si queréis probar rápidamente os recomiendo esta página: https://regexr.com/


Título: Re: Expresión regular. Obtener ancho x alto
Publicado por: WHK en 13 Julio 2018, 18:13 pm
Prueba con /(\d+)\s*x+\s*(\d+)/gi

https://regexr.com/3sdnh


Título: Re: Expresión regular. Obtener ancho x alto
Publicado por: OssoH en 13 Julio 2018, 19:32 pm
Que grandes sois!!!
Si, funciona
Y la web que me habéis pasado para el simulacro es perfecta para pruebas y aprender.

Muchas gracias a todos!!
 ;-) ;-) ;-)