【问题标题】:php explode at capital letters?php在大写字母处爆炸?
【发布时间】:2012-01-25 05:44:43
【问题描述】:

我有这样的字符串:

$a = 'helloMister';
$b = 'doggyWaltz';
$c = 'bumWipe';
$d = 'pinkNips';

我怎样才能在大写字母处爆炸?我在谷歌上搜索了一段时间,结果一无所获!

【问题讨论】:

    标签: php function


    【解决方案1】:

    如果您想将helloMister 拆分为helloMister,您可以使用preg_split 在大写字母之前的某个点拆分字符串,方法是使用肯定的前瞻断言:

    $pieces = preg_split('/(?=[A-Z])/',$str);
    

    如果您想将其拆分为helloister,您可以这样做:

    $pieces = preg_split('/[A-Z]/',$str);
    

    【讨论】:

    • 如果第一个字符已经是大写,这个正则表达式会生成一个空元素,如果你想省略你可以先使用 lcfirst:$pieces = preg_split('/.(?=[A-Z])/' ,lcfirst($str));
    • 如果第一个字符是小写,这很好用,但是假设我们需要分解RecipesActionModel,并且我们只需要三个元素的数组Receipe,Action,Model。此解决方案使数组具有四个元素,其中元素 0 为空。
    • 非常感谢您,我正在研究积极的前瞻性断言,您的回答对我有很大帮助!
    • 用 array_filter 包裹它以去除任何空元素。
    • 使用它来避免第一个空元素,以防第一个元素是大写的。 preg_split('/(?=[A-Z])/', 'CamelCase', -1, PREG_SPLIT_NO_EMPTY);
    【解决方案2】:

    查找preg_split

    $result = preg_replace("([A-Z])", " $0", "helloMister");
    print_r(explode(' ', $result));
    

    骇客骇客。只是在你的输入字符串中不要有空格。

    【讨论】:

      【解决方案3】:

      扩展马修的答案,这非常有效,

      $arr = preg_replace("([A-Z])", " $0", $str);
      $arr = explode(" ",trim($arr));
      

      【讨论】:

        【解决方案4】:

        preg_split,有点像explode但是需要一个正则表达式

        preg_split('~[A-Z]~',$inputString)
        

        【讨论】:

        • 我也在想同样的事情,我想他们也希望大写字母作为第二个单词的一部分。
        • 酷,这很好,这会输出一个数组吗?
        猜你喜欢
        • 1970-01-01
        • 2011-08-18
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 2011-07-20
        • 1970-01-01
        • 1970-01-01
        • 2013-02-13
        相关资源
        最近更新 更多