preg_replace con expresiones regulares y tíldes
Publicado por Mk (22 intervenciones) el 28/11/2020 18:11:22
Buenas,
llevo ya días intentando reemplazar palabras exactas con tílde por otras pero no consigo encontrar la expresión regular que lo haga.
Una expresión básica sería usando \bPalabra\b, esto funciona bien si ninguna palabra del texto a buscar es reemplazable parcialmente por esa. Por ejemplo (ejemplo real) tengo en mi texto la palabra vehículo y hago un regex de \bculo\b, si vehículo no tuviese tilde, la palabra vehículo no de debería reemplazar por nada, pero al llevar la tilde, la parte "culo" de vehículo se reemplaza obteniendo una palabra sin sentido (vehíPALABRA).
He probado de hacer esto: /(\bculo\b/um y en webs de testing de regex como regex101.com funciona bien el problema viene a la hora de ejecutarlo en php que me da el error Warning: preg_replace(): Compilation failed: invalid UTF-8 string at offset 1
Por lo tanto, con la expresión regular sin la /u reemplaza cosas que no debería y si pongo la /u peta... no se que es peor.
¿Alguien sabe como solucionar esto?
Gracias
llevo ya días intentando reemplazar palabras exactas con tílde por otras pero no consigo encontrar la expresión regular que lo haga.
Una expresión básica sería usando \bPalabra\b, esto funciona bien si ninguna palabra del texto a buscar es reemplazable parcialmente por esa. Por ejemplo (ejemplo real) tengo en mi texto la palabra vehículo y hago un regex de \bculo\b, si vehículo no tuviese tilde, la palabra vehículo no de debería reemplazar por nada, pero al llevar la tilde, la parte "culo" de vehículo se reemplaza obteniendo una palabra sin sentido (vehíPALABRA).
He probado de hacer esto: /(\bculo\b/um y en webs de testing de regex como regex101.com funciona bien el problema viene a la hora de ejecutarlo en php que me da el error Warning: preg_replace(): Compilation failed: invalid UTF-8 string at offset 1
Por lo tanto, con la expresión regular sin la /u reemplaza cosas que no debería y si pongo la /u peta... no se que es peor.
¿Alguien sabe como solucionar esto?
Gracias
Valora esta pregunta


0