【问题标题】:How to get substring of comma delimited string?如何获取逗号分隔字符串的子字符串?
【发布时间】:2012-05-19 23:10:30
【问题描述】:

我有一个逗号分隔的字符串,并希望前 100 个条目(不包括第 100 个逗号)作为单个字符串。

例如,如果我有字符串

a,b,c,d,e,f,g

问题是获取前 3 个条目,所需的结果字符串是

a,b,c

【问题讨论】:

    标签: php string substring explode


    【解决方案1】:

    您可以通过查找第 100 个分隔符来做到这一点:

    $delimiter = ',';
    $count = 100;
    $offset = 0;
    while((FALSE !== ($r = strpos($subject, $delimiter, $offset))) && $count--)
    {
        $offset = $r + !!$count;
    }
    echo substr($subject, 0, $offset), "\n";
    

    或类似地对其进行标记:

    $delimiter = ',';
    $count = 100;
    $len = 0;
    $tok = strtok($subject, $delimiter);
    while($tok !== FALSE && $count--)
    {
        $len += strlen($tok) + !!$count;
        $tok = strtok($delimiter);
    }
    echo substr($subject, 0, $len), "\n";
    

    【讨论】:

      【解决方案2】:

      使用爆炸/内爆:

      $str     = 'a,b,c,d,e,f,g';
      $temp1   = explode(',',$str);
      $temp2   = array_slice($temp1, 0, 3);
      $new_str = implode(',', $temp2);
      

      使用正则表达式:

      $new_str = preg_replace('/^((?:[^,]+,){2}[^,]+).*$/','\1',$str);
      

      【讨论】:

      【解决方案3】:

      一种方法是在逗号后拆分字符串并将前 100 个索引放在一起(逗号分隔)。 在此之前,您必须检查 count(array) 是大于还是小于 100。

      【讨论】:

        【解决方案4】:

        试试php的explode()函数。

        $string_array = explode(",",$string);
        

        遍历数组得到你想要的值:

        for($i = 0; $i < sizeof($string_array); $i++)
        {
        echo $string_array[$i];//display values
        }
        

        【讨论】:

          猜你喜欢
          • 2015-02-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-07
          • 1970-01-01
          • 1970-01-01
          • 2021-09-28
          • 1970-01-01
          相关资源
          最近更新 更多