【问题标题】:How can I split a string on the first occurrence of something?如何在第一次出现时拆分字符串?
【发布时间】:2011-12-28 09:50:02
【问题描述】:

我知道“explode”会拆分字符串并将其转换为每次出现的数组。但是如何在第一次出现时拆分并在第一次出现后保留所有内容?

示例:

$split = explode('-', 'orange-yellow-red');
echo $split[1]; // output: "yellow"

^ 我希望这样输出:yellow-red

$split = explode('-', 'chocolate-vanilla-blueberry-red');
echo $split[1]; // output: "vanilla"

^ 我希望这样输出:vanilla-blueberry-red

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以将limit 作为explode 的第三个参数传递,这将完成这项工作。

    $split = explode('-', 'orange-yellow-red',2);
    echo $split[1]; //output yellow-red
    

    【讨论】:

      【解决方案2】:

      看看explode的第三个参数:

      $limit

      如果 limit 设置为正,则返回的数组将包含最大限制元素,最后一个元素包含字符串的其余部分。

      如果limit参数为负数,则返回除最后一个-limit之外的所有分量。

      如果限制参数为零,则将其视为 1。

      $a=explode('-','chocolate-vanilla-blueberry-red', 2);
      echo $a[1]; // outputs vanilla-blueberry-red
      

      【讨论】:

        【解决方案3】:
        $split = explode('-', 'chocolate-vanilla-blueberry-red');
        unset($split[0]);
        echo implode('-', $split); # vanilla-blueberry-red
        

        【讨论】:

          【解决方案4】:

          没有变量的解决方案:

          strtok('orange-yellow-red', '-');
          echo strtok(null);
          

          【讨论】:

            【解决方案5】:

            也许是正则表达式?

            [^-]+-
            

            【讨论】:

            • 正则表达式比简单的 explode('sep', 'foobar', 2); 更昂贵
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-10-12
            • 2016-06-07
            • 2014-03-22
            • 2015-11-30
            • 1970-01-01
            • 2019-04-02
            • 2021-08-12
            相关资源
            最近更新 更多