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 :).