PHP にはマルチバイトの 'preg' 関数がありません。つまり、デフォルトの preg_functions はすべて mb セーフであるということですか? PHP ドキュメントには何も記載されていませんでした。
ベストアンサー1
pcre はすぐに使える utf8 をサポートしています。'u' 修飾子のドキュメントを参照してください。
図 (\xC3\xA4 はドイツ語の文字「ä」の UTF8 エンコードです)
echo preg_replace('~\w~', '@', "a\xC3\xA4b");
これは「@@¤@」をエコーします。なぜなら「\xC3」と「\xA4」は異なるシンボルとして扱われたからです。
echo preg_replace('~\w~u', '@', "a\xC3\xA4b");
('u' に注意) は、"\xC3\xA4" が 1 文字として扱われたため、"@@@" を出力します。