Tema: Ayudita =)
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/06/2005, 05:08
leonardop
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Los casos que mencionas sólo requieren algo de manipulación en las sustituciones de la función negrita()

Cita:
la palabra ej "añejo" y en la db la palabra es "Añejo" con mayuscula me lo cambia a minuscula
Esto sucede porque la sentencia eregi_replace("$value","<b>$value</b>",$mensaje); hace el reemplazo usando el patrón de búsqueda ($value) y no el valor coincidente en la cadena de asunto. Podría solucionarse modificando la sentencia de este modo:

Código PHP:
eregi_replace("$value","<b>\\0</b>",$mensaje); 
Cita:
los acentos los encuentra pero no los pone negrita por ej la palabra ingresada en el form es : informática la encuentra en la database por: informatica o informática pero solo colorea la que yo he ingresado en el formulario "informática"
Este otro caso puede solucionarse de varias formas. Lo que se me ocurre inicialmente es modificar el patrón para que convierta ciertos caracteres (en este caso, vocales y su correspondiente caracter con acento) en secuencias que coincidan con ambos casos.

Considera por ejemplo:

Código PHP:
function negrita($mensaje)
{
    global 
$search;

    foreach (
$search as $value) {
        if (
$value == '')
            continue;

        
// Patron original
        
$patron preg_quote ($value'/');

        
// Aplicar casos especiales en el patrón
        
$casos = array ('[aá]''[eé]''[ií]''[oó]''[uú]');
        foreach (
$casos as $caso) {
            
$patron preg_replace ("/{$caso}/i"$caso$patron);
        }

        
$mensaje preg_replace("/{$patron}/i"'<b>$0</b>'$mensaje);
    }

    return 
$mensaje;

He modificado un poco el código, usando preg_replace(), una función que por lo general opera sobre expresiones regulares un poco más rápido que ereg_replace() y soporta una sintaxis un poco más común. Quizás te resulte de ayuda :).