PHP の preg_match_all を使用して、次の部分文字列をキャプチャしたいと思います。
- AZ、az、すべてアクセント付き文字。
- スペース;
- ハイフン。
数値文字を含め、文字列に他のものを含む文字列をキャプチャしてはなりません。
この例は近いですが、数値文字を含む文字列もキャッチします。
preg_match_all("/([\w -]+)/u", $abigstring, $matches);
PHP の preg_match_all を使用して、次の部分文字列をキャプチャしたいと思います。
数値文字を含め、文字列に他のものを含む文字列をキャプチャしてはなりません。
この例は近いですが、数値文字を含む文字列もキャッチします。
preg_match_all("/([\w -]+)/u", $abigstring, $matches);
それは Unicode プロパティの仕事です:
preg_match_all("/([\p{L} -]+)/u", $abigstring, $matches);
\p{L}
Unicode プロパティ "Letter" を持つ任意の文字に一致します。
そうしたい方のために、動作しない上記のコードを修正します。
preg_match("/^([\p{L} -]+)$/u", $string)
アンカー (^ と $) がありませんでした
編集:はるかに優れています。ハイフン/スペースが途中でのみ許可されている場合:
/^([\p{L}](?:[\p{L} -]+[\p{L}])?)$/u