Domanda

In questo esempio funziona bene:

echo preg_replace("/\bI\b/u", 'we', "I can"); // we can

Questo erano lettere russe vengono utilizzati non funziona, anche se io uso "u" modificatore:

echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"

Quindi la domanda è che cosa devo fare per risolvere questo problema?
Grazie.

È stato utile?

Soluzione

In PCRE (la libreria utilizzata da preg_replace), \b si riferisce solo ai confini di parola in senso ASCII, vale a dire, solo [a-zA-Z0-9_] sono caratteri di parola.

Se si desidera far corrispondere un personaggio che non ha Я lettere, cifre o _ immediatamente prima o dopo, si può usare:

(?<![\p{L}0-9_])Я(?![\p{L}0-9_])

Si devono ancora utilizzare il modificatore u.

Altri suggerimenti

confini

?? spesso intuitivo .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top