3

aのすべての出現箇所をに置き換えたい5。うまく機能するコードは次のとおりです。

$content=preg_replace("/\ba\b/","5", $content);

非標準文字の間にある場所やzapłać、単語の最後にUnicode(または非ASCII)文字が続く場所などの単語がない限り。それを修正する簡単な方法はありますか?azmarłaa

4

2 に答える 2

3

問題は、事前定義された文字クラスがASCIIベースであり、修飾子を使用\wしても変更されないことです。uregular-expressions.infoを参照してください。pregは列のPCREです)

後読みと先読みを使用して、次のことを行うことができます。

$content=preg_replace("/(?<!\p{L})a(?!\p{L})/","5",$content);

前に文字がなく、前に文字がない場合、これは「a」を置き換えます。

\p{L}あらゆる言語からのあらゆる種類の手紙

于 2013-01-22T10:42:35.173 に答える
0
$content=preg_replace("/\ba\b/u","5",$content);
于 2013-01-22T10:36:14.507 に答える