Foros del Web » Programando para Internet » PHP »

Expresiones regulares (Estilo twitter)

Estas en el tema de Expresiones regulares (Estilo twitter) en el foro de PHP en Foros del Web. Hola verán estoy intentando hacer una expresión regular con mayúsculas, minúsculas, y números. El caso es que a partir de @loquequiera1234 se transforme en <a ...
  #1 (permalink)  
Antiguo 15/08/2011, 12:37
 
Fecha de Ingreso: mayo-2008
Mensajes: 315
Antigüedad: 15 años, 11 meses
Puntos: 7
Expresiones regulares (Estilo twitter)

Hola verán estoy intentando hacer una expresión regular con mayúsculas, minúsculas, y números.

El caso es que a partir de @loquequiera1234 se transforme en <a href="usuario.php?nombre=loquequiera1234" >loquequiera1234</a> lo he estado intentado con el preg_replace pero no entiendo ni papa.

Alguien me podria hacer un ejemplo o pasarme alguna formación para poderme guiar?

Gracias
  #2 (permalink)  
Antiguo 15/08/2011, 12:43
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Expresiones regulares (Estilo twitter)

No será esto lo que quieres? Perdón si me equivoco

Código PHP:
Ver original
  1. <?php
  2. $usuario = '@loquequiera1234';
  3. $conv = substr($usuario, 1);
  4. echo '<a href="usuario.php?nombre='.$conv.'">'.$conv.'</a>';
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 15/08/2011, 12:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresiones regulares (Estilo twitter)

Aquí hay algo:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 15/08/2011, 12:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 315
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Expresiones regulares (Estilo twitter)

Cita:
Iniciado por andresdzphp Ver Mensaje
No será esto lo que quieres? Perdón si me equivoco

Código PHP:
Ver original
  1. <?php
  2. $usuario = '@loquequiera1234';
  3. $conv = substr($usuario, 1);
  4. echo '<a href="usuario.php?nombre='.$conv.'">'.$conv.'</a>';
Si pero si por ejemplo esta entre un texto me devolvería solo la palabra que esta unida al @?

Si esta en un párrafo que ponga hola hola @user hola hola

Esto no me devolveria: user hola hola?
  #5 (permalink)  
Antiguo 15/08/2011, 12:58
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Expresiones regulares (Estilo twitter)

Entonces hazlo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $str = '@loquequiera1234 tiene novia y su twitter es @mariacamila';
  4.  
  5. $str = preg_replace('/(^|\s)@([a-z0-9_]+)/i', '$1<a href="usuario.php?nombre=$2">@$2</a>', $str);
  6.  
  7. echo $str;

Edit: Si quieres aprender lee el link de @pateketrueke
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 15/08/2011 a las 13:09
  #6 (permalink)  
Antiguo 15/08/2011, 13:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 315
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Expresiones regulares (Estilo twitter)

Genial gracias lo he podido adaptar, aun así me mirare eso de paketrueque pero confieso que no entiendo nada xD Entiendo que es para admitir contextos o no. Pero me parece muy estaño utilizarlos.

Otra pregunta para introducir una funcion dentro del preg_replace como se hace?

$message = preg_replace('/(^|\s)@([a-z0-9_-]+)/i', '$1<a href="usuario.php?id=remplazar($2)">@$2</a>', $message);
Porque no puedo meterla a mi parecer

Última edición por totolia; 15/08/2011 a las 13:52

Etiquetas: estilo, expresiones, regulares, usuarios
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 21:15.