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.