límite de palabra en caracteres no latinos en php
-
02-10-2019 - |
Pregunta
Este ejemplo funciona bien:
echo preg_replace("/\bI\b/u", 'we', "I can"); // we can
Éste eran las letras rusas se utilizan no funciona a pesar de que yo uso "u" modificador:
echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"
Así que la pregunta es ¿qué debo hacer para arreglar esto?
Gracias.
Solución
En PCRE (la biblioteca utilizada por preg_replace
), \b
se refiere sólo a límites de palabra en un sentido ASCII, es decir, solamente [a-zA-Z0-9_]
son caracteres de palabra.
Si desea hacer coincidir un carácter Я
que no tiene letras, dígitos o _
inmediatamente antes o después, puede utilizar:
(?<![\p{L}0-9_])Я(?![\p{L}0-9_])
Usted todavía tiene que utilizar el modificador u
.
Otros consejos
límites
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow