aのすべての出現箇所をに置き換えたい5。うまく機能するコードは次のとおりです。
$content=preg_replace("/\ba\b/","5", $content);
非標準文字の間にある場所やzapłać、単語の最後にUnicode(または非ASCII)文字が続く場所などの単語がない限り。それを修正する簡単な方法はありますか?azmarłaa
問題は、事前定義された文字クラスがASCIIベースであり、修飾子を使用\wしても変更されないことです。u(regular-expressions.infoを参照してください。pregは列のPCREです)
後読みと先読みを使用して、次のことを行うことができます。
$content=preg_replace("/(?<!\p{L})a(?!\p{L})/","5",$content);
前に文字がなく、前に文字がない場合、これは「a」を置き換えます。
\p{L}:あらゆる言語からのあらゆる種類の手紙。
$content=preg_replace("/\ba\b/u","5",$content);