PHP preg_match_all CamelCase, получение элементов prefix_ и CamelCased - PullRequest
0 голосов
/ 28 октября 2010

Я пытаюсь использовать preg_match_all, чтобы вернуть отдельные массивы для различных элементов в строке CamelCase.В моем примере я пытаюсь получить префикс строки в одном массиве, а все остальное (часть строки верблюда) разделяется на второй массив.Например, get_BookGenreTitle должен возвращать get_ в одном массиве, а другой массив, содержащий слова Book, Genre и Title.Или, для дальнейшей демонстрации, post_PersonID вернул бы 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);

?>

Возвращает: Array ([0] => Array ([0] => get_Book [1] => Жанр [2] => Название) [1] => Массив ([0] => get_ [1] => [2] =>) [2] => Массив ([0] => Book [1] => Genre [2] => Title))

Мне было интересно, есть ли какой-нибудь способ вернуть и массив с префиксом, и отдельный массив с CamelCaseэлементов, но без пустых элементов в массиве префиксов.

Пример конечного результата: Array ([0] => Array ([0] => get_Book [1] => Genre [2] => Title) [1] => Array ([0] => get_) [2] => Array ([0] => Book [1] => Жанр [2] => Title))

1 Ответ

0 голосов
/ 29 октября 2010

каждый раз, когда что-то не найдено, но запрашивается внутри (), вы получите пустой элемент массива.я не могу вспомнить какие-либо варианты, чтобы отключить это поведение.

...