【发布时间】:2010-10-28 18:31:19
【问题描述】:
我正在尝试使用 preg_match_all 为 CamelCase 字符串中的各种元素返回一个单独的数组。 在我的示例中,我试图在一个数组中获取字符串的前缀,并将其他所有内容(字符串的驼峰式部分)拆分为第二个数组。例如,get_BookGenreTitle 应该在一个数组中返回 get_,另一个数组包含单词 Book、Genre 和 Title。或者,为了进一步演示,post_PersonID 将在一个数组和另一个包含单词 ID 的数组中返回 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);
?>
返回:Array ( [0] => Array ( [0] => get_Book [1] => Genre [2] => Title ) [1] => Array ( [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] => 数组 ( [0] => Book [1] => Genre [2] => Title ) )
【问题讨论】:
标签: php multidimensional-array preg-match-all prefix camelcasing