Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/03/2014, 13:51
Avatar de jheckson
jheckson
 
Fecha de Ingreso: febrero-2011
Ubicación: $VE->Aragua['Maracay']
Mensajes: 109
Antigüedad: 13 años, 2 meses
Puntos: 8
Respuesta: preg_match tildes en php insensible

Amigo me costo un buen trabajo, pero al fin lo logre, la cuestion es que los patrones hasta lo que yo se, no son de asemejar los tildes con su contraparte sin tildes (recuerda que es un lenguaje de programacion de origen no latino) por eso siempre hay problemas o trucos para estos.

En fin lo que hice fue, que por cada palabra clave que necesitabas, iba a cambiar las volares por un sub patron que tomara en cuenta las vocales en sus diversas variantes con tildes y sin ellos!

Código PHP:
Ver original
  1. function resaltar($busqueda_para_negrita, $texto_para_negrita)
  2.     {
  3.         $claves_para_negrita = explode(" ",$busqueda_para_negrita);
  4.         $clave_para_negrita = $claves_para_negrita;
  5.         $num = count($clave_para_negrita);
  6.         for($i=0; $i < $num; $i++)
  7.         {
  8.             $clave_para_negrita[$i] = preg_replace('/(i|í|Í|I)/', '(i|í|Í|I)', $clave_para_negrita[$i]);
  9.             $clave_para_negrita[$i] = preg_replace('/(o|O|ó|Ó)/', '(o|ó|Ó|O)', $clave_para_negrita[$i]);
  10.             $clave_para_negrita[$i] = preg_replace('/(a|a|á|Á)/', '(a|a|á|Á)', $clave_para_negrita[$i]);
  11.            
  12.             echo $clave_para_negrita[$i] . '<br/>';
  13.            
  14.             $texto_para_negrita = preg_replace("/(".trim($clave_para_negrita[$i]).")/Ui", "<b>\\1</b>" , $texto_para_negrita);
  15.         }
  16.        
  17.         return $texto_para_negrita;
  18.     }
  19.      
  20.     $busqueda = "estas amigo avión mecanico";
  21.     $titulo = "Hola amigo mio que tal estas avion mecánico";
  22.      
  23.     $titulo = resaltar($busqueda, $titulo);
  24.      
  25.     echo "<u>Búsqueda:</u> $busqueda";
  26.     echo "<br>";
  27.     echo "<u>Título:</u> $titulo";
  28.     ?>

PD: Termina de agregar las demas vocales! =)