Я пытаюсь использовать preg_match_all для возврата отдельных массивов для различных элементов в строке CamelCase. В моем примере я пытаюсь получить префикс строки в одном массиве, а все остальное (верблюжью часть строки) разделить на второй массив. Например, предполагается, что get_BookGenreTitle возвращает get_ в одном массиве, а другой массив содержит слова Book, Genre и Title. Или, для дальнейшей демонстрации, post_PersonID вернет post_ в одном массиве и другой массив, содержащий идентификатор слова.
У меня есть следующий фрагмент кода, который выполняется, но несколько небрежно. Когда он возвращает массив, содержащий префикс, массив также содержит количество пустых элементов, равное количеству элементов 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] => Название ) )
Мне было интересно, есть ли способ вернуть как массив с префиксом, так и отдельный массив с элементами CamelCase, но без пустых элементов в массиве префикса.
Пример конечного результата: Массив ( [0] => Массив ( [0] => get_Book [1] => Жанр [2] => Название ) [1] => Массив ( [0] => get_ ) [ 2] => Массив ( [0] => Книга [1] => Жанр [2] => Название ) )