【问题标题】:PHP preg_match_all CamelCase, obtaining prefix_ and CamelCased elementsPHP preg_match_all CamelCase,获取preg_match_all和CamelCased元素
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 该死,我只是一直在想,一定有一些我没有想到的东西。如果它没有拾取那些空元素,它就很接近了。
    • 你仍然可以稍后运行它并取消设置丢失的元素......但我想只有 preg_match_all 你不会到达那里;)
    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 2013-07-17
    • 2018-05-07
    • 2011-06-03
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多