Foros del Web » Programando para Internet » PHP »

Reemplazamientos con php

Estas en el tema de Reemplazamientos con php en el foro de PHP en Foros del Web. Hola, haber si me explico: Tengo titulos de canciones guardados en mi base de datos, y estoy intentando que cuando la cancion buscada coincida, se ...
  #1 (permalink)  
Antiguo 04/05/2012, 12:53
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antigüedad: 8 años, 2 meses
Puntos: 2
Reemplazamientos con php

Hola, haber si me explico:

Tengo titulos de canciones guardados en mi base de datos, y estoy intentando que cuando la cancion buscada coincida, se muestre en los resultados de búsqueda en negrita.

Ejemplo:

Alguien busca (fíjense que está escrito en minúsculas):
"shakira boom"

y hay estos títulos en mi base de datos:

"Shakira Boom album"
"Shakira loba"
"Remix Shakira"

Quiero que independiente de que el usuario ponga mayúsculas o minúsculas en su búsqueda me muestre por ejemplo en el primer enlace esto:

"Shakira Boom album"

en lugar de

"shakira boom album"

Es decir, con los términos que coincidan en negrita.

Código PHP:

$titulo_cancion_que_se_mostrara 
str_ireplace("$terminos_buscados""<b>$terminos_buscados</b>"$titulo_cancion_original); 
Todo eso lo he conseguido con str_ireplace, el problema es que me transforma las minúsculas de los títulos también y me gustaría que respetase los títulos originales con la excepción de poner en negrita los términos que coincidan.

No sé si me he explicado.
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 04/05/2012, 13:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 11 años, 4 meses
Puntos: 1532
Respuesta: Reemplazamientos con php

para ello puedes usar ucfirst($termino_buscado) para que la primera letra sea mayúscula
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 04/05/2012, 13:32
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 631
Antigüedad: 13 años, 10 meses
Puntos: 53
Respuesta: Reemplazamientos con php

puedes utilizar varias funciones de cadena por ejemplo

Código PHP:
Ver original
  1. <?php
  2.  
  3. $original="uno _Dos tres";
  4. $busqueda="dos";
  5. $longitud = strlen($busqueda);
  6. $pos=stripos($original,$busqueda);
  7. $palabra=substr($original,$pos,$longitud);
  8. $titulomostrar=str_replace($palabra,"<b>$palabra</b>", $original);
  9. print "original=".$original;
  10. print "<br>busqueda=".$busqueda;
  11. print "<br>resultado=".$titulomostrar;
  12.  
  13. ?>
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #4 (permalink)  
Antiguo 05/05/2012, 06:05
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: Reemplazamientos con php

Cita:
Iniciado por PIRRUMAN Ver Mensaje
puedes utilizar varias funciones de cadena por ejemplo

Código PHP:
Ver original
  1. <?php
  2.  
  3. $original="uno _Dos tres";
  4. $busqueda="dos";
  5. $longitud = strlen($busqueda);
  6. $pos=stripos($original,$busqueda);
  7. $palabra=substr($original,$pos,$longitud);
  8. $titulomostrar=str_replace($palabra,"<b>$palabra</b>", $original);
  9. print "original=".$original;
  10. print "<br>busqueda=".$busqueda;
  11. print "<br>resultado=".$titulomostrar;
  12.  
  13. ?>
Pues no sé porque pero me va a veces si y a veces no... Es decir, a veces, me pone en negrita caracteres que no conciden para nada.

Voy a repasar todo el código. Estoy fijandome en que no haya problemas con stripslashes ni cosas así...
  #5 (permalink)  
Antiguo 05/05/2012, 09:36
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 631
Antigüedad: 13 años, 10 meses
Puntos: 53
Respuesta: Reemplazamientos con php

en cuales titulos de canciones no funciona? podrias poner ejemplos de los resultados que obtienes, es decir, la palabra que buscas y lo que te arroja, de preferencia cuando lo hace mal
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #6 (permalink)  
Antiguo 07/05/2012, 05:01
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: Reemplazamientos con php

Cita:
Iniciado por PIRRUMAN Ver Mensaje
en cuales titulos de canciones no funciona? podrias poner ejemplos de los resultados que obtienes, es decir, la palabra que buscas y lo que te arroja, de preferencia cuando lo hace mal
Gracias por el interés y la implicación.

Mira
te copio el código de ejemplo:

Código PHP:

    <?php

    $original
="Lady Gaga - Pokerface";
    
$busqueda="Alejandro";
    
$longitud strlen($busqueda);


    
$pos=stripos($original,$busqueda);


    
$palabra=substr($original,$pos,$longitud);

    
//
    
$titulomostrar=str_replace($palabra,"<b>$palabra</b>"$original);



    echo 
"original=".$original;
    echo 
"<br>busqueda=".$busqueda;
    echo 
"<br>resultado=".$titulomostrar;

    
?>
Eso en teoría no debería poner nada en negrita ¿no?

Bueno, pues me muestra esto:

Lady Gaga - Pokerface

Tal cual lo ves, no debería estar subrayado ya que he buscado "Alejandro".

Me he fijado que el número de caracteres en negrita siempre coincide con el número de caracteres en la $busqueda, pero como ves, no el contenido...

*Lo he quitado de todo el código y lo he metido en un .php aparte para ver si no funcionaba correctamente al mezclarlo todo, pero no, falla igual con tal sólo el código de arriba. He hecho muchas pruebas con otros nombres y lo mismo.
  #7 (permalink)  
Antiguo 07/05/2012, 09:07
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 631
Antigüedad: 13 años, 10 meses
Puntos: 53
Respuesta: Reemplazamientos con php

el codigo que te pase es para cuando encuentra alguna conincidencia pero no evaluaba cuando no lo hacia , ahora esto debe funcionar:
Código PHP:
Ver original
  1. $original="Lady Gaga - Pokerface";
  2.     $busqueda="alejand";
  3.     $longitud = strlen($busqueda);
  4.  
  5.  
  6.     $pos=stripos($original,$busqueda);
  7.     if($pos!==false)
  8.     {
  9.     $palabra=substr($original,$pos,$longitud);
  10.     $titulomostrar=str_replace($palabra,"<b>$palabra</b>", $original);
  11.     echo "original=".$original;
  12.     echo "<br>busqueda=".$busqueda;
  13.     echo "<br>resultado=".$titulomostrar;
  14.     }
  15. else
  16.     {
  17.     print "<b>".$busqueda."</b> No encontrada";
  18.     }
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #8 (permalink)  
Antiguo 07/05/2012, 09:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: Reemplazamientos con php

Cita:
Iniciado por PIRRUMAN Ver Mensaje
el codigo que te pase es para cuando encuentra alguna conincidencia pero no evaluaba cuando no lo hacia , ahora esto debe
...Claro, no me di cuenta de ese detalle y me "encerré en el código escrito" lo arreglé antes de que me contestases. Lo hice con preg_match y usando la "i" para que aceptase mayúsculas y minúsculas, todo englobado en un if( ).

Muchas gracias igualmente.

¡Saludos!

Etiquetas: 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 20:55.