Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/08/2009, 07:34
Oli_ar
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con la funcion preg_replace_callback

De esta manera, no me van los plurales:

/(\B|\b)'.$termino.'(?:|s|es)(\B|\b)/i

Quitando (\B|\b) de los 2 lados, lo cambia pero deja igual la s fuera del enlace.

las unicas formas para que me vaya la s dentro del enlace es la siguiente;

'/(\b|\B)'.$termino.'(?:|s|es)\b/i' o tambien '/'.$termino.'(?:|s|es)\b/i'

pero asi, vuelvo a lo mismo con lo de los acentos

Para probar tengo estes 2 ejemplos:

ejemplo 1: ( ahi no van los plurales)

Código:
$cadena_inicial="Caí del tejados";
$termino1="Caí";
$termino2="tejado";
$cadena_inicial = preg_replace_callback('/(\b|\B)'.$termino1.'(?:|s|es)(\b|\B)/i','remplace', $cadena_inicial);
$cadena_inicial = preg_replace_callback('/(\b|\B)'.$termino2.'(?:|s|es)(\b|\B)/i','remplace', $cadena_inicial);
ejemplo 2: (ahi van los plurales pero no van las que acaban acentuadas)

Código:
$cadena_inicial="Caí del tejados";
$termino1="Caí";
$termino2="tejado";
$cadena_inicial = preg_replace_callback('/(\b|\B)'.$termino1.'(?:|s|es)\b/i','remplace', $cadena_inicial);
$cadena_inicial = preg_replace_callback('/(\b|\B)'.$termino2.'(?:|s|es)\b/i','remplace', $cadena_inicial);
Asi a todo voy a estudiar el enlace que me pasaste. La verdad que el tema este es bantante complejo.