a
のすべての出現箇所をに置き換えたい5
。うまく機能するコードは次のとおりです。
$content=preg_replace("/\ba\b/","5", $content);
非標準文字の間にある場所やzapłać
、単語の最後にUnicode(または非ASCII)文字が続く場所などの単語がない限り。それを修正する簡単な方法はありますか?a
zmarła
a
問題は、事前定義された文字クラスが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);