preg_match_all を使用して、CamelCase 文字列内のさまざまな要素の個別の配列を返そうとしています。私の例では、1 つの配列で文字列のプレフィックスを取得しようとしており、他のすべて (文字列のキャメルケース部分) は 2 番目の配列に分割されています。たとえば、get_BookGenreTitle は、1 つの配列で get_ を返し、Book、Genre、および Title という単語を含む別の配列を返すことになっています。または、さらにデモンストレーションを行うために、post_PersonID は、1 つの配列で post_ を返し、単語 ID を含む別の配列を返します。
私はそれを成し遂げる次のコードの塊を持っていますが、やや雑です。プレフィックスを含む配列を返すとき、その配列には、CamelCased 要素の数に等しい数の空白要素も含まれます。
<?php
$var = "get_BookGenreTitle";
preg_match_all("/(get_|post_)?([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)/", $var, $matches);
print_r($matches);
?>
戻り値:配列 ( [0] => 配列 ( [0] => get_Book [1] => ジャンル [2] => タイトル) [1] => 配列 ( [0] => get_ [1] => [2 ] => ) [2] => 配列 ( [0] => 本 [1] => ジャンル [2] => タイトル ) )
プレフィックスを含む配列とキャメルケース要素を含む別の配列の両方を返す方法があるかどうか疑問に思っていましたが、プレフィックス配列に空白の要素はありません。
最終結果の例: Array ( [0] => Array ( [0] => get_Book [1] => Genre [2] => Title ) [1] => Array ( [0] => get_ ) [2] = > 配列 ( [0] => 本 [1] => ジャンル [2] => タイトル ) )