Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Expresion regular

Estas en el tema de Expresion regular en el foro de PHP en Foros del Web. Hola, estoy retomando un codigo php que me encontre por internet para identificar tags de twitter y la verdad es que me eocntre con una ...
  #1 (permalink)  
Antiguo 09/03/2013, 11:21
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 9 meses
Puntos: 0
Expresion regular

Hola, estoy retomando un codigo php que me encontre por internet para identificar tags de twitter y la verdad es que me eocntre con una expresion regular que no logro explicarme:
Código PHP:
preg_match_all('(\x{20ac}([\d\w\/\pL]+)|#([\d\w\/\pL]+))u'$strMensaje$arrTags
Agradeceria muchissimo vuestra ayuda ya que como comentaba me interesa saber que elementos identifica esta expresion regular pero no soy capaz de entederla.
Muchas gracias de antemano
  #2 (permalink)  
Antiguo 09/03/2013, 11:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular

Está interesante, a ver si me puedo explicar:

Código regexp:
Ver original
  1. (    delimitador de expresión
  2.  
  3. \x{20ac}   secuencia de escape hexadecimal
  4.  
  5. ([\d\w\/\pL]+)    captura uno o mas de: números, letras, barras y caracteres en latín
  6.  
  7. |     separador lógico OR
  8.  
  9. #     carácter literal "gato"
  10.  
  11. ([\d\w\/\pL]+)    otra captura de uno o mas de: números, letras, barras y caracteres en latín
  12.  
  13. )   delimitador de expresión
  14.  
  15. u    modificador de expresión: no está documentado bajo PHP/PCRE

A lo que me viene una pregunta, ¿de dónde tomaste la expresión?

RegExp es un sub-lenguaje, no siempre funciona la misma expresión bajo todos los lenguajes donde se embebe, porque de hecho el modificar "u" minúscula de verdad no está documentado bajo la implementación PCRE de PHP.

Ejecutando el código parece estar todo bien: https://ignite.io/code/513b71a2ec221eb935000002

Por su propia naturaleza RegExp debe ser estudiado de manera independiente, te sugiero buscar referencias de cómo entender y escribir expresiones regulares, el manual de PHP tiene una muy buena aquí: http://www.php.net/manual/es/referen...ern.syntax.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/03/2013, 11:43
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Expresion regular

Hola en realidad es un codigo PHP, la intencion por lo que el desarrollador dejo como comentario en su codigo, es que mediante esta expresion se estarían filtrando hashtags de twitter con el simbolo € y/o simbolo #. Pero no estoy muy convencido de si esta bien o no, por ello he recurrido al foro para saber que opina la gente sobre ella.
Gracias por tu interes y ayuda!
  #4 (permalink)  
Antiguo 09/03/2013, 11:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular

Te debo una disculpa, de hecho el modificador "u" (minúscula) si existe y está documentado, permite tratar la expresión como UTF-8.

A lo que, gracias al comentario, explicaría que "\x{20ac}" equivale a la secuencia que identifica el carácter del Euro.

Entonces la expresión es correcta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 09/03/2013, 11:51
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Expresion regular

Muchas gracias, acabo de crear un pequeño programita para testearlo y efectivamente la expresion regular funciona bien xD. Muchas gracias!

Etiquetas: expresion, regular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:22.