【问题标题】:Explode String in PHP在 PHP 中分解字符串
【发布时间】:2012-12-29 05:09:36
【问题描述】:

如果我有一个字符串“123x456x78”,我如何分解它以返回一个包含“123”作为第一个元素和“456”作为第二个元素的数组?基本上,我想取后面跟着“x”的字符串(这就是为什么应该扔掉“78”)。我一直在搞乱正则表达式,但遇到了麻烦。

谢谢!

编辑:如果字符串是“123x456x78x”,我需要三个元素:“123”、“456”、“78”。基本上,对于“x”之后的每个区域,我需要记录字符串直到下一个“x”。

【问题讨论】:

  • $newString = explode("x","123x456x78"); 这个结果?或者是其他东西?或者您是否要删除 78 的最后一个结果?
  • 只是好奇....这与 LimeSurvey 有关吗?
  • 不,与 LimeSurvey 无关。

标签: php arrays string explode delimiter


【解决方案1】:

使用下面的代码来爆炸。效果很好!

   <?php
    $str='123x456x78';
    $res=explode('x',$str);
    unset($res[count($res)-1]); // remove last array element
    print_r($res);
    ?>

【讨论】:

    【解决方案2】:

    虽然我完全支持正则表达式,但在这种情况下,使用 PHP 的数组函数可能会更容易......

    $result=array_slice(explode('x',$yourstring),0,-1);
    

    这应该可行,因为只有explode 返回的最后一个元素后面不会跟着'x'。不确定如果explode 以'x' 结尾,它是否会添加一个空字符串作为最后一个元素,您可能需要对其进行测试...

    【讨论】:

      【解决方案3】:

      有很多不同的方法,但这里有一个 RegEx,因为您正在尝试这样做:

      $str = "123x456x78";
      preg_match_all("/(\d+)x/", $str, $matches);
      var_dump($matches[1]);
      

      输出:

      array(2) { [0]=> string(3) "123" [1]=> string(3) "456" }
      

      【讨论】:

      • 我认为这是正确的答案,因为 OP 编辑​​了问题并且它仍然适用。
      • @Class 好吧,我的答案也可以正常工作......只是数组的最后一个元素将是一个空字符串,但谁在乎,因为它无论如何都会被取消设置?
      【解决方案4】:

      分解并删除最后一个结果:

      $string='123x456x78'; // original string
      
      $res = explode('x', $string); // resulting array, exploded by 'x'
      
      $c = count($res) - 1; // last key #, since array starts at 0 subtract 1
      
      unset($res[$c]); // unset that last value, leaving you with everything else but that.
      

      【讨论】:

        【解决方案5】:
        $var = "123x456x78";
        $array = explode("x", $var);
        array_pop($array);
        

        【讨论】:

          【解决方案6】:

          使用爆炸

          $string='123x456x78';
          
          $res = explode('x', $string);
          if(count($res) > 0) {
              echo $res[0];
              if(count($res) > 1) {
                  echo $res[1];
              }
          }
          

          【讨论】:

            【解决方案7】:
            $arr = explode("x", "123x456x78");
            

            然后

            unset($arr[2]);
            

            如果你真的受不了那个可怜的 78。

            【讨论】:

              猜你喜欢
              • 2020-03-12
              • 2023-03-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多