0

我正在尝试使用 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] => 书籍 [1] => 类型 [2] => 标题))

4

1 回答 1

0

每次找不到东西但在 () 内询问时,您将得到一个空数组元素。我不记得任何取消设置此行为的选项。

于 2010-10-28T20:02:32.600 回答