【问题标题】:How does one break a string down by capital letters with PHP?如何用 PHP 用大写字母分解字符串?
【发布时间】:2011-10-18 16:59:58
【问题描述】:

我有一个字符串:CamelCaseString

我想对大写字母进行explode()、split() 或其他更好的方法来将此字符串分解为单个单词。

最简单的方法是什么?

--- 解决方案更新 ---

此链接指向一个略有不同的问题,但我认为该答案通常比此页面上当前问题的答案更有用: How can I add a space in string at capital letters, but keep continuous capitals together using PHP and a Regex?

【问题讨论】:

  • 普通explode() 函数的问题在于它会删除所谓的“针”(在您的情况下为大写字母)。所以通常的爆炸不会起作用。
  • 是的,我试过preg_split('/[ABCDEFGHIJKLMNOPRSTUVWXYZ]/', "CamelCaseString", -1, PREG_SPLIT_NO_EMPTY) 但它返回一个没有大写字符的数组

标签: php split explode camelcasing


【解决方案1】:

这似乎也有效

$split = preg_split("/(?<=[a-z])(?![a-z])/", "CamelCaseString", -1, PREG_SPLIT_NO_EMPTY);

而且它不会分解更长的大写字母。 IE。 “MySQL”,将变成“My”和“SQL”

【讨论】:

    【解决方案2】:

    你应该使用正则表达式。 试试这个:preg_match_all('/[A-Z][^A-Z]*/', "CamelCaseString", $results);

    包含所有单词的数组将保存在$results[0]中。

    【讨论】:

    • 没错,$results 将是:Array ( [0] =&gt; Array ( [0] =&gt; Camel [1] =&gt; Case [2] =&gt; String ) )
    • 它不适用于像“MySQL”这样的字符串。它会给你“My”、“S”、“Q”、“L”,这可能不是你想要的
    • 我还必须检查以确保字符串不是全部大写(每个字母都拆分),不是全部小写(所有数据都丢失),以及其他一些东西。它并不完美,但还不错。
    • 查看此问题以获得通常更有用的答案:stackoverflow.com/questions/8611617/…
    【解决方案3】:

    split() 函数已被弃用,因此我会寻找使用其他函数的解决方案。

    【讨论】:

    • 嗯,是的,他特意要求split以外的其他解决方案
    • 他的问题已被编辑。它最初询问如何使用 split() 来执行此操作。感谢您在我的观点完全有效时投反对票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2017-01-28
    相关资源
    最近更新 更多