Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/08/2009, 07:59
horape
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema con la funcion preg_replace_callback

Cita:
Iniciado por Oli_ar Ver Mensaje
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.
ahh vos querias la s dentro del enlace!! yo pensaba q no

entonces saca el signo afuera, así (:|s|es)?