Foros del Web » Programando para Internet » PHP »

Expresion regular que busque espacios pegados a las etiquetas

Estas en el tema de Expresion regular que busque espacios pegados a las etiquetas en el foro de PHP en Foros del Web. Hola a [email protected] Necesito crear un patron con expresiones regulares que busque si en un texto que contiene una o varias etiquetas hay espacios en ...
  #1 (permalink)  
Antiguo 20/01/2019, 03:30
 
Fecha de Ingreso: enero-2014
Mensajes: 70
Antigüedad: 5 años, 1 mes
Puntos: 2
Expresion regular que busque espacios pegados a las etiquetas

Hola a [email protected]
Necesito crear un patron con expresiones regulares que busque si en un texto que contiene una o varias etiquetas hay espacios en blanco delante y/o detras de estas y si encuentra alguno me muestre el texto donde lo ha encontrado, pero no consigo hacer el patrón y que funcione correctamente.
Este es el array con los string
Código PHP:
Ver original
  1. $listaTextos = array(
  2.         '<strong>En un lugar de la Mancha, <br>cuyo nombre no quiero acordarme…</strong>',
  3.         ' <strong>Erase una vez<strong>',
  4.         '<strong>En un lugar de la Mancha<strong><br>de cuyo',
  5.        
  6.     );
  7.  
  8. $patron =
Y este es el if con el que me muestra los textos que cumplen la condición
Código PHP:
Ver original
  1. foreach ($listaTextos as $texto) {
  2.         $esCoincidente = preg_match($patron, $texto);
  3.  
  4.         if ($esCoincidente) {
  5.             echo "<br/>Textos encontrados: " . $texto;
  6.         }
  7.     }
En este ejemplo me deberia de mostrar el primero, pues tiene un espacio delante de <br> y el segundo que lo tiene delante de <strong> si en vez de estar delante, el espacio en blanco estuviera detrás de la etiqueta, lógicamente también me lo debería de mostrar
  #2 (permalink)  
Antiguo 23/01/2019, 04:23
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 6 años, 7 meses
Puntos: 38
Respuesta: Expresion regular que busque espacios pegados a las etiquetas

Buenas, podrías probar con este patrón:

Código PHP:
Ver original
  1. $patron = /\s\<\/?[a-zA-Z]+\>/;

Te explico el patrón:

- \s\< busca un espacio en blanco seguido de el signo "<".
- \/? indica que puede haber una barra de cierre de etiqueta o no detrás del signo "<".
- [a-zA-Z]+ Busca cualquier coincidencia de letras en minúsculas o mayúsculas.
- \> Segido de únicamente letras debe haber un signo ">" que cierra la etiqueta.

Aquí puedes ver como funciona el patrón: https://regexr.com/46unj. Esta es una herramienta magnífica para buscar expresiones regulares para tus diferentes problemas.
__________________
Diseño Web - Arisman Web
  #3 (permalink)  
Antiguo 23/01/2019, 17:53
 
Fecha de Ingreso: enero-2014
Mensajes: 70
Antigüedad: 5 años, 1 mes
Puntos: 2
Respuesta: Expresion regular que busque espacios pegados a las etiquetas

Pero como también quiero que me busque el espacio detrás de las etiquetas, le he añadido \s\ al final pero no funciona

Código PHP:
Ver original
  1. '<strong> En este ejemplo tiene el espacio detras de la etiqueta<strong>',
  2.  
  3. $patron = '/<\/?[a-zA-Z]+\>\s/';
Y con este patrón me busca el espacio detrás de la etiqueta, pero necesito que lo busque delante y detras

Última edición por pedromir; 25/01/2019 a las 11:46
  #4 (permalink)  
Antiguo 25/01/2019, 13:20
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 6 años, 7 meses
Puntos: 38
Respuesta: Expresion regular que busque espacios pegados a las etiquetas

Cita:
Iniciado por pedromir Ver Mensaje
Pero como también quiero que me busque el espacio detrás de las etiquetas, le he añadido \s\ al final pero no funciona

Código PHP:
Ver original
  1. '<strong> En este ejemplo tiene el espacio detras de la etiqueta<strong>',
  2.  
  3. $patron = '/<\/?[a-zA-Z]+\>\s/';
Y con este patrón me busca el espacio detrás de la etiqueta, pero necesito que lo busque delante y detras

No sé si te funcionará algo asi:

Código PHP:
Ver original
  1. $patron = /(?:(\s\<\/?[a-zA-Z]+\>)|(\<\/?[a-zA-Z]+\>\s))/;

No lo he probado. La barra vertical indica una comparación OR. Pruebala, de todas formas hay mucha documentación en internet sobre expresiones regulares, son muy complejas y muy útiles, no está de más aprender lo básico porque si eres programador te darás cuenta que con ellas puedes ahorrar mucho código en muchas ocasiones.
__________________
Diseño Web - Arisman Web
  #5 (permalink)  
Antiguo 27/01/2019, 15:59
 
Fecha de Ingreso: enero-2014
Mensajes: 70
Antigüedad: 5 años, 1 mes
Puntos: 2
Respuesta: Expresion regular que busque espacios pegados a las etiquetas

Genial, funciona perfectamente, muchas gracias, porque esta expresión por mi cuenta no la habría hecho en la vida, y he leído mucho, he hecho muchas pruebas y perdidos algunos días, pero ha sido imposible, nada de lo que he probado ha funcionado, las expresiones que he hecho hasta ahora, han sido para validar un texto en un input, un teléfono, cosas así, cosas sencillas, pero esta expresión ya es excesivamente compleja para mi, mi nivel de programación es bastante básico, no soy programador, soy un aficionado, programo cosillas como hobby, para entretenerme.
Una última cuestión, sería posible utilizar con esta expresión la función strlen para contar el número de caracteres que tiene el string, pero saltando por encima, o sea sin tener en cuenta las etiquetas, para luego con la función wordwrap cortar el texto por donde nos interese, es que lo único que he encontrado por internet es la función strip_tags que no me sirve porque me elimina las etiquetas



La zona horaria es GMT -6. Ahora son las 23:40.