Foros del Web » Programando para Internet » PHP »

PHP OO Como remplazar una palabra que contiene un '@'

Estas en el tema de Como remplazar una palabra que contiene un '@' en el foro de PHP en Foros del Web. Buenas noches a todos, lo que necesito básicamente es crear un sistema de mención. En mi web los usuarios pueden crear publicaciones y comentarlas pero ...
  #1 (permalink)  
Antiguo 21/11/2014, 23:27
 
Fecha de Ingreso: octubre-2014
Mensajes: 38
Antigüedad: 10 años, 2 meses
Puntos: 0
Como remplazar una palabra que contiene un '@'

Buenas noches a todos, lo que necesito básicamente es crear un sistema de mención.

En mi web los usuarios pueden crear publicaciones y comentarlas pero lo que quiero es que cuando mencionen a alguien (Con un arroba antes del nombre de usuario ej. @Usuario) se borre el arroba y quede el puro nombre de usuario con un link hacia su perfil. Lo he intentado de está manera.

Código PHP:
<?PHP

//Contenido del comentario
$texto '@Pedro es hermano de @Juan y @Maria';

//Extracción de la palabra que contenga un @
$extraer explode("@",$texto,2);
$extraer explode(" ",$extraer[1]);
$extraer $extraer[0];

//Palabra que se sustituira
$nuevoextraido '@' $extraer;
//Contenido que sustituira lo anterior
$extraidourl '<a href="misitio.com/usuarios/' .$extraer'">' $extraer '</a>';

echo 
str_replace($nuevoextraido,$extraidourl,$texto) . '<br />';

?>
Resultado:
Texto original: @Pedro es hermano de @Juan y @Maria
Texto nuevo: [URL="http://misitio.com/usuarios/Pedro"]Pedro[/URL] es hermano de @Juan y @Maria

Pero el problema es que solo lo hace una vez, así que si un comentario tiene más de una mención (Ej. @Usuario1 y @Usuario2) solo remplaza la primera mención ¿Cómo hago para que me remplace todas las menciones osea todas las palabras que contengan un arroba. Muchas gracias a todos.
  #2 (permalink)  
Antiguo 21/11/2014, 23:47
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: Como remplazar una palabra que contiene un '@'

La forma fácil es meter ese codigo adentro de un while cuya condición sea la función strpos.

También hay otras mas elaboradas o usando expresiones regulares también puedes hacerlo.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 21/11/2014, 23:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Como remplazar una palabra que contiene un '@'

Usar funciones simples para cadenas de texto no es la mejor solución para este tipo de problemas.

Lo mejor es usar expresiones regulares como en el siguiente tema: http://www.forosdelweb.com/f18/crean...tring-1114342/

La idea es capturar únicamente la siguiente expresión: /@(\S+)/ que significaría "una arroba seguida de cualquier cosa que no sea un espacio".
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: palabra, remplazar, 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 18:01.