PHP で名前に対して適度に寛容なバリデーターを作成しようとしていますが、最初の試みは次のパターンで構成されています。
// unicode letters, apostrophe, hyphen, space
$namePattern = "/^([\\p{L}'\\- ])+$/";
これは、最終的に への呼び出しに渡されpreg_match()
ます。私が知る限り、これは一般的な ASCII アルファベットで動作しますが、Ă や 张 などのよりスパイシーな文字ではつまずくようです。
パターン自体に何か問題がありますか?もしかしたら\p{L}
、自分が思っているよりも多くの仕事をすることを期待しているのだろうか?
それとも、入力が渡される方法と関係がありますか? 関連性があるかどうかはわかりませんが、フォーム ページで UTF8 エンコーディングを指定するようにしました。