質問: preg_replace('/^[ ]+/u', '', $str); ``` この正規表現のuはどんな意味をもつのでしょうか? ちなみに、他のコードの意味は理解しています。 http://php.net/manual/ja/reference.pcre.pattern.modifiers.php こちらを見ても理解できなかったのでお聞きしました。 宜しくお願い致します。
回答: UTF-8を使う、という意味の指定です。 `u`なしの場合、`.`は**1バイト**にマッチする、`[あ]`とすれば`あ`を構成する3バイトのどれかにヒット、という意味になるなど、バイト単位で動くので、ASCII以外の文字はまともに使えません。 `u`ありでは、`.`は1文字にマッチし、`[0-9]`のような範囲指定も可能になるなど、UTF-8の文字をフル活用することができます。 あえてコードポイント単位の処理をしたい状況、あるいはLatin-1などUTF-8でない文字コードを扱うという状況なら別ですが、ふつうに日本語などをUTF-8で処理する場合は、常にセットすることをおすすめします。