PHP preg_match_all CamelCase,获取prefix_和CamelCased元素

时间:2010-10-28 18:31:19

标签: php multidimensional-array preg-match-all prefix camelcasing

我正在尝试使用preg_match_all为CamelCase字符串中的各种元素返回单独的数组。 在我的示例中,我试图在一个数组中获取字符串的前缀,并且其他所有内容(字符串的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);

?>

返回:数组([0] =&gt;数组([0] =&gt; get_Book [1] =&gt;类型[2] =&gt;标题)[1] =&gt;数组([0 ] =&gt; get_ [1] =&gt; [2] =&gt;)[2] =&gt;数组([0] =&gt; Book [1] =&gt;类型[2] =&gt;标题))< / strong>

我想知道是否有某种方法可以返回带有前缀的数组和带有CamelCase元素的单独数组,但前缀数组中没有空白元素。

结束结果示例:数组([0] =&gt;数组([0] =&gt; get_Book [1] =&gt;类型[2] =&gt;标题)[1] =&gt;数组( [0] =&gt; get_)[2] =&gt;数组([0] =&gt;书籍[1] =&gt;类型[2] =&gt;标题))

1 个答案:

答案 0 :(得分:0)

每次找不到内容但要求in()时,你会得到一个空的数组元素。 我不记得任何取消这种行为的选择。