Foros del Web » Programando para Internet » PHP »

Ignorar caracter de un termino de busqueda en un buscador php

Estas en el tema de Ignorar caracter de un termino de busqueda en un buscador php en el foro de PHP en Foros del Web. Hola Tengo un buscador de musica y hay titulos de canciones que contienen simbolos especiales como "/" "&", etc.. Quiero hacer de alguna forma para ...
  #1 (permalink)  
Antiguo 16/01/2013, 18:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 228
Antigüedad: 16 años, 8 meses
Puntos: 12
Ignorar caracter de un termino de busqueda en un buscador php

Hola
Tengo un buscador de musica y hay titulos de canciones que contienen simbolos especiales como "/" "&", etc..

Quiero hacer de alguna forma para que ignore el siguiente simbolo "\" para que la busqueda se guarde sin ese simbolo en la base de datos.

Es decir, que lo elimine y no se guarde asi en la BD aunque alguien haga una busqueda con este simbolo "\"
  #2 (permalink)  
Antiguo 16/01/2013, 18:30
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 14 años, 1 mes
Puntos: 511
Respuesta: Ignorar caracter de un termino de busqueda en un buscador php

Hola que tal.

Existen 2 formas para realizar lo que deseas.
1.- Guardar ese símbolo escapando los caracteres especiales al momento de guardarlo en la base de datos, dependiendo del método de conexión que utilices existe la función en PHP

mysql = mysql-escape-string

mysqli = mysqli-escape-string

Y la otra posible solución seria eliminarla mediante expresiones regulares, ejemplo

Código PHP:
<?php
$string 
"prueba con\ signo" ;
$cadena str_replace("\\"""$string );
echo 
$cadena;
?>
Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 16/01/2013, 19:08
 
Fecha de Ingreso: marzo-2008
Mensajes: 228
Antigüedad: 16 años, 8 meses
Puntos: 12
Respuesta: Ignorar caracter de un termino de busqueda en un buscador php

a ver, te explico un poco mas porque no lo acabo de entender muy bien

Tengo esta web: http://mp3music4free.tk

como veras en Recent searches, tiene busquedas que contiene repetidas veces este simbolo "\\\\\\\\"

entonces, quiero hacer que desaparezca.. no entiendo porque aparece siempre ese simbolo
  #4 (permalink)  
Antiguo 16/01/2013, 19:16
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 14 años, 1 mes
Puntos: 511
Respuesta: Ignorar caracter de un termino de busqueda en un buscador php

Cita:
Iniciado por elielbeck Ver Mensaje
a ver, te explico un poco mas porque no lo acabo de entender muy bien

Tengo esta web: http://mp3music4free.tk

como veras en Recent searches, tiene busquedas que contiene repetidas veces este simbolo "\\\\\\\\"

entonces, quiero hacer que desaparezca.. no entiendo porque aparece siempre ese simbolo
Puedes mostrar el código que genera esa sección para ayudarte mejor, ya que no puedo adivinar como lo programaste, de esa forma será más fácil ayudarte

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #5 (permalink)  
Antiguo 16/01/2013, 19:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 228
Antigüedad: 16 años, 8 meses
Puntos: 12
Respuesta: Ignorar caracter de un termino de busqueda en un buscador php

Index.php

Código:
<?php include('header.php');?>

<div class="container">
<div class="box">
<div class="title">Recent Searches</div>
<div class="inner-box">
<?php 
$newMusic = mysql_query("SELECT * FROM search GROUP BY term ORDER BY id DESC LIMIT 30") or die (mysql_error());
while ($newRow = mysql_fetch_array($newMusic)){
?>
<a class="url-box" href="music.php?search=<?php echo $newRow['term'];?>"><button class="music-button"><?php echo $newRow['term'];?></button></a>
<?php }?>
</div><!--end inner-box-->
</div><!--end box-->

<div class="middle-box"><?php echo $adrow['ad2'];?></div>

<div class="box">
<div class="title">Top of the Charts</div>
<div class="inner-box">
<?php
 	$i=1;
    $rss = new DOMDocument();
    $rss->load('http://www.uktop40.co.uk/official_top_40.rss');
    $feed = array();
    foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array ( 
            'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
            'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
            );
        array_push($feed, $item);
    }
    $limit = 25;
    for($x=1;$x<$limit;$x++) {
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
		$SongTitle = substr($title, 3);
		$SongTerm =  stristr($SongTitle, '-');
		$SongTerm = substr($SongTerm, 2);
        $description = $feed[$x]['desc'];
		$AlbumArt = stristr($description, 'img src="');
		$AlbumArt = substr($AlbumArt, 9);
		$AlbumArt = explode(" ", $AlbumArt);
		$AlbumArt  = $AlbumArt[0];
		       
        echo '<div class="Music-Tumbs"><a href="music.php?search='.$SongTitle.'"><img src="'.$AlbumArt.' width="92" height="92"></a></div>';
		
    }
?>
</div><!--end inner-box-->
</div><!--end box-->

<div class="middle-box"><?php echo $adrow['ad2'];?></div>

<div class="dc"><?php echo $settings['disclaimer'];?></div>

</div><!--container-->
<?php include('footer.php');?>
  #6 (permalink)  
Antiguo 16/01/2013, 19:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 228
Antigüedad: 16 años, 8 meses
Puntos: 12
Respuesta: Ignorar caracter de un termino de busqueda en un buscador php

Music.php

Código:
<?php include('header_music.php');?>
<div class="container">
<div class="left">
<?php

$mp3name = preg_replace("![^a-z0-9]+!i", "_", $search);
$mp3name = strtolower($mp3name); 

include('includes/simple_html_dom.php');

$html = file_get_html('http://mp3skull.com/mp3/'.$mp3name.'.html');
$list = array();

foreach ( $html->find('div#song_html ') as $e ) {

    $song = array();
    $song['bit'] = preg_replace('!\s+!', ' ',$e->find('div', 0)->plaintext);
    $song['title'] = preg_replace('!\s+!', ' ',$e->find('div', 1)->plaintext);
    $song['url'] = preg_replace('!\s+!', ' ',$e->find('a', 0)->href);
    $list[] = $song;
}
echo'<div class="search-title">'.$search.'</div>';
echo'<ul id="items">';

if ($list==NULL){
echo '<div class="song-list">';	
echo '<div class="error">We could not find any music for the term <strong>'.$search.'</strong>. This content maybe removed due to copyrights owners request.</div>';
echo '</div>';
}else{

$remove = array("mp3", "Download", "Play", "Embed", "Send Ringtone");
foreach ($list as $p){
	
	$mTitle = str_replace($remove, "", $p['title']);
	$str = strlen ($mTitle);
	if ($str > 50) {
	$MusicTitle = substr($mTitle,0,50).'...';
	}else{
	$MusicTitle = $mTitle;}	
	
?>

<li>
<div class="song-list">
<div class="songInfo"><?php echo $p['bit'];?></div>
<div class="songTitle"><?php echo $MusicTitle;?></div>

<div class="bttomBar">
<div class="btns">
<a href="<?php echo $p['url'];?>" target="_blank" class="orange">Download</a>
</div>
<div class="mplayer">
<object type="application/x-shockwave-flash" data="dewplayer.swf?mp3=<?php echo $p['url'];?>" width="200" height="20" id="dewplayer"><param name="wmode" value="transparent" /><param name="movie" value="dewplayer.swf?mp3=<?php echo $p['url'];?>" /></object>
</div>
</div><!--bttomBar-->
</div><!--song-list-->
</li>
<?php }

}
$addSearch = mysql_real_escape_string($search);
mysql_query("INSERT INTO search (term) VALUES('$addSearch') ") 
or die(mysql_error());   

?>
</ul>
<script type="text/javascript">
  
 jQuery(function($){
  
  $('ul#items').easyPaginate({
  step:15
  });
  
});
</script>

</div><!--left-->
<div class="right">
<div class="share-box">

<span class='st_facebook_large' displayText='Facebook'></span>
<span class='st_twitter_large' displayText='Tweet'></span>
<span class='st_myspace_large' displayText='MySpace'></span>
<span class='st_stumbleupon_large' displayText='StumbleUpon'></span>
<span class='st_email_large' displayText='Email'></span>
<span class='st_sharethis_large' displayText='ShareThis'></span>

 </div>
<div class="clear"></div>
<div class="right-box"><?php echo $adrow['ad1'];?></div>
<div class="right-box">
<div class="facebookOuter">
 <div class="facebookInner">
  <div class="fb-like-box" 
      data-width="300" data-height="266" 
      data-href="<?php echo $settings['fbpage'];?>" 
      data-border-color="#F4F4F4" data-show-faces="true" 
      data-stream="false" data-header="false">
  </div>          
 </div>
</div>
</div><!--end right-box-->
<div class="right-box"><?php echo $adrow['ad1'];?></div>
<div class="right-box">
<div class="followus">Follow Us On</div>
<a class="fb" href="<?php echo $settings['fbpage'];?>"><img src="images/facebook_normal.png" width="77" height="20"></a>
<a class="twit" href="<?php echo $settings['twitter'];?>"><img src="images/twitter_normal.png" width="77" height="20"></a>
<a class="gplus" href="<?php echo $settings['gplus'];?>"><img src="images/googleplus_normal.png" width="77" height="20"></a>
<div class="space"></div>
</div><!--end follow-->
</div><!--end right-->
</div><!--container-->
<?php include('footer.php');?>
  #7 (permalink)  
Antiguo 17/01/2013, 06:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 228
Antigüedad: 16 años, 8 meses
Puntos: 12
Respuesta: Ignorar caracter de un termino de busqueda en un buscador php

yo creo que el prolema esta aqui:

Cita:
$song = array();
$song['bit'] = preg_replace('!\s+!', ' ',$e->find('div', 0)->plaintext);
$song['title'] = preg_replace('!\s+!', ' ',$e->find('div', 1)->plaintext);
$song['url'] = preg_replace('!\s+!', ' ',$e->find('a', 0)->href);
$list[] = $song;
o aqui

Cita:
$mp3name = preg_replace("![^a-z0-9]+!i", "_", $search);
$mp3name = strtolower($mp3name);
pero no se arreglarlo

Etiquetas: ignorar
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 14:24.